home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / emul / cp4 / c2p_src / c2p_windowamigaasm.asm < prev    next >
Assembly Source File  |  1999-01-01  |  73KB  |  4,951 lines

  1. * :ts=8                c2p_windowamigaasm.asm
  2. *
  3. * Copyright (C) 1997 Zavacki Ferenc
  4. *    For any further information mail to:
  5. *        zavacki@dragon.klte.hu
  6. *
  7.  
  8. *
  9. *void REGARGS c2pfull(    REG(a0,void *chunkyaddr),
  10. *            REG(a1,void *planaraddr));
  11.  
  12. *void REGARGS c2pdelta(    REG(a0,void *chunkyaddr),
  13. *            REG(a1,void *deltaaddr),
  14. *            REG(a2,void *planaraddr) );
  15.  
  16. *    Init
  17. *
  18. *int REGARGS c2pinit(    REG(d0,int planewidth),
  19. *            REG(a0,unsigned char *linedeltavec),
  20. *            REG(d1,int planes) );
  21.  
  22.     xdef _c2pinit        ; d0-planewidth (in bytes)
  23.     xdef _c2pfull        ; full version
  24.     xdef _c2pdelta        ; delta version
  25.  
  26.     xref _c            ; *b
  27.     xref _PenTable        ; *b
  28.  
  29.  
  30. CHUNKY_BUFFER_WIDTH    equ    352
  31. CHUNKY_BUFFER_HEIGHT    equ    283
  32.  
  33. _c2pinit        move.l    a0,C2P_LineSkipBufferAddress
  34.             move.l    d0,C2P_BitplaneByteWidth
  35.             clr.l    d0
  36.             cmp.b    #1,d1
  37.             beq    .1
  38.             cmp.b    #2,d1
  39.             beq    .2
  40.             cmp.b    #3,d1
  41.             beq    .3
  42.             cmp.b    #4,d1
  43.             beq    .4
  44.             cmp.b    #5,d1
  45.             beq    .5
  46.             cmp.b    #6,d1
  47.             beq    .6
  48.             cmp.b    #7,d1
  49.             beq    .7
  50.             cmp.b    #8,d1
  51.             beq    .8
  52.             moveq    #-1,d0
  53.             rts
  54.  
  55. .1            move.l    #f_1,C2P_FullRoutine
  56.             move.l    #d_1,C2P_DeltaRoutine
  57.             rts
  58. .2            move.l    #f_2,C2P_FullRoutine
  59.             move.l    #d_2,C2P_DeltaRoutine
  60.             rts
  61. .3            move.l    #f_3,C2P_FullRoutine
  62.             move.l    #d_3,C2P_DeltaRoutine
  63.             rts
  64. .4            move.l    #f_4,C2P_FullRoutine
  65.             move.l    #d_4,C2P_DeltaRoutine
  66.             rts
  67. .5            move.l    #f_5,C2P_FullRoutine
  68.             move.l    #d_5,C2P_DeltaRoutine
  69.             rts
  70. .6            move.l    #f_6,C2P_FullRoutine
  71.             move.l    #d_6,C2P_DeltaRoutine
  72.             rts
  73. .7            move.l    #f_7,C2P_FullRoutine
  74.             move.l    #d_7,C2P_DeltaRoutine
  75.             rts
  76. .8            move.l    #f_8,C2P_FullRoutine
  77.             move.l    #d_8,C2P_DeltaRoutine
  78.             rts
  79.  
  80. *-------------------------------------------------------------------------------
  81. * Main enrty1
  82. * IN: a0.l - Chunky Buffer Address
  83. *     a1.l - Planar Buffer Address
  84. *     d0.l - Bitnepwithbzte
  85.  
  86. _c2pfull        jmp    ([C2P_FullRoutine])
  87. *-------------------------------------------------------------------------------
  88. *-------------------------------------------------------------------------------
  89. * Main enrty2
  90. * IN: a0.l - Chunky Buffer Address
  91. *     a1.l - Delta Buffer Address
  92. *     a2.l - Planar Buffer Address
  93. *     a3.l - LineSkip Buffer AddrESS
  94. *     d0.l - BitBPlaneyBterwidth.B
  95.  
  96. _c2pdelta        movem.l    d0/a3-a5,-(sp)
  97.             move.l    #_PenTable,a3        ; a3 - PenTable.l    (~)
  98.             move.l    a0,a4            ; a4 - PenArray.b    (p)
  99.             move.w    #6204,d0
  100.             move.l    _c,a5            ; a5 - chunky.b        (c)
  101.             clr.l    d1
  102. .cik            move.b    (a5)+,d1
  103.             move.b    (a3,d1.l),(a4)+
  104.             move.b    (a5)+,d1
  105.             move.b    (a3,d1.l),(a4)+
  106.             move.b    (a5)+,d1
  107.             move.b    (a3,d1.l),(a4)+
  108.             move.b    (a5)+,d1
  109.             move.b    (a3,d1.l),(a4)+
  110.             move.b    (a5)+,d1
  111.             move.b    (a3,d1.l),(a4)+
  112.             move.b    (a5)+,d1
  113.             move.b    (a3,d1.l),(a4)+
  114.             move.b    (a5)+,d1
  115.             move.b    (a3,d1.l),(a4)+
  116.             move.b    (a5)+,d1
  117.             move.b    (a3,d1.l),(a4)+
  118.             move.b    (a5)+,d1
  119.             move.b    (a3,d1.l),(a4)+
  120.             move.b    (a5)+,d1
  121.             move.b    (a3,d1.l),(a4)+
  122.             move.b    (a5)+,d1
  123.             move.b    (a3,d1.l),(a4)+
  124.             move.b    (a5)+,d1
  125.             move.b    (a3,d1.l),(a4)+
  126.             move.b    (a5)+,d1
  127.             move.b    (a3,d1.l),(a4)+
  128.             move.b    (a5)+,d1
  129.             move.b    (a3,d1.l),(a4)+
  130.             move.b    (a5)+,d1
  131.             move.b    (a3,d1.l),(a4)+
  132.             move.b    (a5)+,d1
  133.             move.b    (a3,d1.l),(a4)+
  134.             dbf    d0,.cik
  135.             movem.l    (sp)+,d0/a3-a5
  136.             jmp    ([C2P_DeltaRoutine])
  137. *-------------------------------------------------------------------------------
  138. *-------------------------------------------------------------------------------
  139.  
  140. * IN: a0.l - Chunky Buffer Address
  141. *     a1.l - Planar Buffer Address
  142. *     d0.l - Bitplane Byte Width
  143.  
  144. f_1            movem.l    d2-d7/a2-a3,-(sp)
  145.  
  146.             move.l    a0,(C2P_ChunkyBufferAddress)
  147.             move.l    a1,(C2P_PlanarBufferAddress)
  148.             move.l    d0,(C2P_BitplaneByteWidth)
  149.  
  150.  
  151.  
  152.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  153.             move.l    (C2P_PlanarBufferAddress,pc),a1
  154.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  155.  
  156.             move.l    (C2P_BitplaneByteWidth,pc),d7
  157.  
  158.             move.l    #$0F0F0F0F,d5
  159.  
  160.             move.l    (a0)+,d0
  161.             and.l    d5,d0
  162.             lsl.l    #4,d0
  163.             move.l    (a0)+,d1
  164.             and.l    d5,d1
  165.             or.l    d1,d0
  166.  
  167.             move.l    (a0)+,d1
  168.             and.l    d5,d1
  169.             lsl.l    #4,d1
  170.             move.l    (a0)+,d2
  171.             and.l    d5,d2
  172.             or.l    d2,d1
  173.  
  174.             move.l    (a0)+,d2
  175.             and.l    d5,d2
  176.             lsl.l    #4,d2
  177.             move.l    (a0)+,d3
  178.             and.l    d5,d3
  179.             or.l    d3,d2
  180.  
  181.             move.l    (a0)+,d3
  182.             and.l    d5,d3
  183.             lsl.l    #4,d3
  184.             move.l    (a0)+,d4
  185.             and.l    d5,d4
  186.             or.l    d4,d3
  187.  
  188.             move.w    d2,d4
  189.             move.w    d0,d2
  190.             swap    d2
  191.             move.w    d2,d0
  192.             move.w    d4,d2
  193.  
  194.             move.w    d3,d4
  195.             move.w    d1,d3
  196.             swap    d3
  197.             move.w    d3,d1
  198.             move.w    d4,d3
  199.  
  200.             move.l    #$00FF00FF,d5
  201.  
  202.             move.l    d1,d4
  203.             lsr.l    #8,d4
  204.             eor.l    d0,d4
  205.             and.l    d5,d4
  206.             eor.l    d4,d0
  207.             lsl.l    #8,d4
  208.             eor.l    d4,d1
  209.  
  210.             move.l    d3,d4
  211.             lsr.l    #8,d4
  212.             eor.l    d2,d4
  213.             and.l    d5,d4
  214.             eor.l    d4,d2
  215.             lsl.l    #8,d4
  216.             eor.l    d4,d3
  217.  
  218.             move.l    #$55555555,d5
  219.  
  220.             and.l    d5,d0
  221.             lsl.l    #3,d0
  222.             and.l    d5,d1
  223.             lsl.l    #2,d1
  224.             and.l    d5,d2
  225.             lsl.l    #1,d2
  226.             and.l    d5,d3
  227.             or.l    d0,d3
  228.             or.l    d1,d3
  229.             or.l    d2,d3
  230.  
  231.             move.l    d3,a3
  232.  
  233.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  234.  
  235. .1            move.l    #$0F0F0F0F,d5
  236.  
  237.             move.l    (a0)+,d0
  238.             and.l    d5,d0
  239.             lsl.l    #4,d0
  240.             move.l    (a0)+,d1
  241.             and.l    d5,d1
  242.             or.l    d1,d0
  243.  
  244.             move.l    (a0)+,d1
  245.             and.l    d5,d1
  246.             lsl.l    #4,d1
  247.             move.l    (a0)+,d2
  248.             and.l    d5,d2
  249.             or.l    d2,d1
  250.  
  251.             move.l    (a0)+,d2
  252.             and.l    d5,d2
  253.             lsl.l    #4,d2
  254.             move.l    (a0)+,d3
  255.             and.l    d5,d3
  256.             or.l    d3,d2
  257.  
  258.             move.l    (a0)+,d3
  259.             and.l    d5,d3
  260.             lsl.l    #4,d3
  261.             move.l    (a0)+,d4
  262.             and.l    d5,d4
  263.             or.l    d4,d3
  264.  
  265.             move.l    a3,(a1)+
  266.  
  267.             move.w    d2,d4
  268.             move.w    d0,d2
  269.             swap    d2
  270.             move.w    d2,d0
  271.             move.w    d4,d2
  272.  
  273.             move.w    d3,d4
  274.             move.w    d1,d3
  275.             swap    d3
  276.             move.w    d3,d1
  277.             move.w    d4,d3
  278.  
  279.             move.l    #$00FF00FF,d5
  280.  
  281.             move.l    d1,d4
  282.             lsr.l    #8,d4
  283.             eor.l    d0,d4
  284.             and.l    d5,d4
  285.             eor.l    d4,d0
  286.             lsl.l    #8,d4
  287.             eor.l    d4,d1
  288.  
  289.             move.l    d3,d4
  290.             lsr.l    #8,d4
  291.             eor.l    d2,d4
  292.             and.l    d5,d4
  293.             eor.l    d4,d2
  294.             lsl.l    #8,d4
  295.             eor.l    d4,d3
  296.  
  297.             move.l    #$55555555,d5
  298.  
  299.             and.l    d5,d0
  300.             lsl.l    #3,d0
  301.             and.l    d5,d1
  302.             lsl.l    #2,d1
  303.             and.l    d5,d2
  304.             lsl.l    #1,d2
  305.             and.l    d5,d3
  306.             or.l    d0,d3
  307.             or.l    d1,d3
  308.             or.l    d2,d3
  309.  
  310.             move.l    d3,a3
  311.  
  312.             sub.l    #1,d6
  313.             bne    .2
  314.  
  315.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  316.  
  317.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l),a1
  318.  
  319. .2            cmp.l    a2,a0
  320.             bne    .1
  321.  
  322.             move.l    a3,(a1)
  323.  
  324.             movem.l    (sp)+,d2-d7/a2-a3
  325.             rts
  326.  
  327. *-------------------------------------------------------------------------------
  328.  
  329. * IN: a0.l - Chunky Buffer Address
  330. *     a1.l - Delta Buffer Address
  331. *     a2.l - Planar Buffer Address
  332. *     a3.l - Line Skip Buffer Address
  333. *     d0.l - Bitplane Byte Width
  334.  
  335. d_1            movem.l    d2-d7/a2-a4,-(sp)
  336.  
  337.             move.l    a0,(C2P_ChunkyBufferAddress)
  338.             move.l    a1,(C2P_DeltaBufferAddress)
  339.             move.l    a2,(C2P_PlanarBufferAddress)
  340.             move.l    a3,(C2P_LineSkipBufferAddress)
  341.             move.l    d0,(C2P_BitplaneByteWidth)
  342.  
  343.  
  344.  
  345.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  346.             move.l    (C2P_DeltaBufferAddress,pc),a1
  347.             move.l    (C2P_PlanarBufferAddress,pc),a2
  348.             move.l    (C2P_LineSkipBufferAddress),a3
  349.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  350.  
  351.             move.l    (C2P_BitplaneByteWidth,pc),d7
  352.  
  353. .12            tst.b    (a3)+
  354.             beq    .14
  355.  
  356.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  357.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  358.  
  359.             add.l    d7,a2
  360.  
  361.             bra    .13
  362.  
  363. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  364.  
  365. .11            cmp.l    (a0)+,(a1)+
  366.             bne    .1
  367.             cmp.l    (a0)+,(a1)+
  368.             bne    .2
  369.             cmp.l    (a0)+,(a1)+
  370.             bne    .3
  371.             cmp.l    (a0)+,(a1)+
  372.             bne    .4
  373.             cmp.l    (a0)+,(a1)+
  374.             bne    .5
  375.             cmp.l    (a0)+,(a1)+
  376.             bne    .6
  377.             cmp.l    (a0)+,(a1)+
  378.             bne    .7
  379.             cmp.l    (a0)+,(a1)+
  380.             bne    .8
  381.  
  382. .10            add.l    #4,a2
  383.  
  384.             sub.l    #1,d6
  385.             bne    .11
  386.  
  387.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l),a2
  388.  
  389. .13            cmp.l    a4,a0
  390.             bne    .12
  391.  
  392.             movem.l    (sp)+,d2-d7/a2-a4
  393.             rts
  394.  
  395. .1            sub.l    #1*4,a0
  396.             add.l    #7*4,a1
  397.             bra    .9
  398.  
  399. .2            sub.l    #2*4,a0
  400.             add.l    #6*4,a1
  401.             bra    .9
  402.  
  403. .3            sub.l    #3*4,a0
  404.             add.l    #5*4,a1
  405.             bra    .9
  406.  
  407. .4            sub.l    #4*4,a0
  408.             add.l    #4*4,a1
  409.             bra    .9
  410.  
  411. .5            sub.l    #5*4,a0
  412.             add.l    #3*4,a1
  413.             bra    .9
  414.  
  415. .6            sub.l    #6*4,a0
  416.             add.l    #2*4,a1
  417.             bra    .9
  418.  
  419. .7            sub.l    #7*4,a0
  420.             add.l    #1*4,a1
  421.             bra    .9
  422.  
  423. .8            sub.l    #8*4,a0
  424.             add.l    #0*4,a1
  425.             bra    .9
  426.  
  427. .9            move.l    #$0F0F0F0F,d5
  428.  
  429.             move.l    (a0)+,d0
  430.             and.l    d5,d0
  431.             lsl.l    #4,d0
  432.             move.l    (a0)+,d1
  433.             and.l    d5,d1
  434.             or.l    d1,d0
  435.  
  436.             move.l    (a0)+,d1
  437.             and.l    d5,d1
  438.             lsl.l    #4,d1
  439.             move.l    (a0)+,d2
  440.             and.l    d5,d2
  441.             or.l    d2,d1
  442.  
  443.             move.l    (a0)+,d2
  444.             and.l    d5,d2
  445.             lsl.l    #4,d2
  446.             move.l    (a0)+,d3
  447.             and.l    d5,d3
  448.             or.l    d3,d2
  449.  
  450.             move.l    (a0)+,d3
  451.             and.l    d5,d3
  452.             lsl.l    #4,d3
  453.             move.l    (a0)+,d4
  454.             and.l    d5,d4
  455.             or.l    d4,d3
  456.  
  457.             move.w    d2,d4
  458.             move.w    d0,d2
  459.             swap    d2
  460.             move.w    d2,d0
  461.             move.w    d4,d2
  462.  
  463.             move.w    d3,d4
  464.             move.w    d1,d3
  465.             swap    d3
  466.             move.w    d3,d1
  467.             move.w    d4,d3
  468.  
  469.             move.l    #$00FF00FF,d5
  470.  
  471.             move.l    d1,d4
  472.             lsr.l    #8,d4
  473.             eor.l    d0,d4
  474.             and.l    d5,d4
  475.             eor.l    d4,d0
  476.             lsl.l    #8,d4
  477.             eor.l    d4,d1
  478.  
  479.             move.l    d3,d4
  480.             lsr.l    #8,d4
  481.             eor.l    d2,d4
  482.             and.l    d5,d4
  483.             eor.l    d4,d2
  484.             lsl.l    #8,d4
  485.             eor.l    d4,d3
  486.  
  487.             move.l    #$55555555,d5
  488.  
  489.             and.l    d5,d0
  490.             lsl.l    #3,d0
  491.             and.l    d5,d1
  492.             lsl.l    #2,d1
  493.             and.l    d5,d2
  494.             lsl.l    #1,d2
  495.             and.l    d5,d3
  496.             or.l    d0,d3
  497.             or.l    d1,d3
  498.             or.l    d2,d3
  499.  
  500.             move.l    d3,(a2)
  501.  
  502.             bra    .10
  503.  
  504. *-------------------------------------------------------------------------------
  505. *-------------------------------------------------------------------------------
  506.  
  507. * IN: a0.l - Chunky Buffer Address
  508. *     a1.l - Planar Buffer Address
  509. *     d0.l - Bitplane Byte Width
  510.  
  511. f_2            movem.l    d2-d7/a2-a4,-(sp)
  512.  
  513.             move.l    a0,(C2P_ChunkyBufferAddress)
  514.             move.l    a1,(C2P_PlanarBufferAddress)
  515.             move.l    d0,(C2P_BitplaneByteWidth)
  516.  
  517.  
  518.  
  519.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  520.             move.l    (C2P_PlanarBufferAddress,pc),a1
  521.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  522.  
  523.             move.l    (C2P_BitplaneByteWidth,pc),d7
  524.  
  525.             move.l    #$0F0F0F0F,d5
  526.  
  527.             move.l    (a0)+,d0
  528.             and.l    d5,d0
  529.             lsl.l    #4,d0
  530.             move.l    (a0)+,d1
  531.             and.l    d5,d1
  532.             or.l    d1,d0
  533.  
  534.             move.l    (a0)+,d1
  535.             and.l    d5,d1
  536.             lsl.l    #4,d1
  537.             move.l    (a0)+,d2
  538.             and.l    d5,d2
  539.             or.l    d2,d1
  540.  
  541.             move.l    (a0)+,d2
  542.             and.l    d5,d2
  543.             lsl.l    #4,d2
  544.             move.l    (a0)+,d3
  545.             and.l    d5,d3
  546.             or.l    d3,d2
  547.  
  548.             move.l    (a0)+,d3
  549.             and.l    d5,d3
  550.             lsl.l    #4,d3
  551.             move.l    (a0)+,d4
  552.             and.l    d5,d4
  553.             or.l    d4,d3
  554.  
  555.             move.w    d2,d4
  556.             move.w    d0,d2
  557.             swap    d2
  558.             move.w    d2,d0
  559.             move.w    d4,d2
  560.  
  561.             move.w    d3,d4
  562.             move.w    d1,d3
  563.             swap    d3
  564.             move.w    d3,d1
  565.             move.w    d4,d3
  566.  
  567.             move.l    #$00FF00FF,d5
  568.  
  569.             move.l    d1,d4
  570.             lsr.l    #8,d4
  571.             eor.l    d0,d4
  572.             and.l    d5,d4
  573.             eor.l    d4,d0
  574.             lsl.l    #8,d4
  575.             eor.l    d4,d1
  576.  
  577.             move.l    d3,d4
  578.             lsr.l    #8,d4
  579.             eor.l    d2,d4
  580.             and.l    d5,d4
  581.             eor.l    d4,d2
  582.             lsl.l    #8,d4
  583.             eor.l    d4,d3
  584.  
  585.             move.l    #$33333333,d5
  586.  
  587.             and.l    d5,d0
  588.             lsl.l    #2,d0
  589.             and.l    d5,d2
  590.             or.l    d0,d2
  591.  
  592.             and.l    d5,d1
  593.             lsl.l    #2,d1
  594.             and.l    d5,d3
  595.             or.l    d1,d3
  596.  
  597.             move.l    #$55555555,d5
  598.  
  599.             move.l    d3,d4
  600.             lsr.l    #1,d4
  601.             eor.l    d2,d4
  602.             and.l    d5,d4
  603.             eor.l    d4,d2
  604.             lsl.l    #1,d4
  605.             eor.l    d4,d3
  606.  
  607.             move.l    d2,a3
  608.             move.l    d3,a4
  609.  
  610.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  611.  
  612. .1            move.l    #$0F0F0F0F,d5
  613.  
  614.             move.l    (a0)+,d0
  615.             and.l    d5,d0
  616.             lsl.l    #4,d0
  617.             move.l    (a0)+,d1
  618.             and.l    d5,d1
  619.             or.l    d1,d0
  620.  
  621.             move.l    (a0)+,d1
  622.             and.l    d5,d1
  623.             lsl.l    #4,d1
  624.             move.l    (a0)+,d2
  625.             and.l    d5,d2
  626.             or.l    d2,d1
  627.  
  628.             move.l    (a0)+,d2
  629.             and.l    d5,d2
  630.             lsl.l    #4,d2
  631.             move.l    (a0)+,d3
  632.             and.l    d5,d3
  633.             or.l    d3,d2
  634.  
  635.             move.l    (a0)+,d3
  636.             and.l    d5,d3
  637.             lsl.l    #4,d3
  638.             move.l    (a0)+,d4
  639.             and.l    d5,d4
  640.             or.l    d4,d3
  641.  
  642.             move.l    a4,(a1)+
  643.  
  644.             move.w    d2,d4
  645.             move.w    d0,d2
  646.             swap    d2
  647.             move.w    d2,d0
  648.             move.w    d4,d2
  649.  
  650.             move.w    d3,d4
  651.             move.w    d1,d3
  652.             swap    d3
  653.             move.w    d3,d1
  654.             move.w    d4,d3
  655.  
  656.             move.l    #$00FF00FF,d5
  657.  
  658.             move.l    d1,d4
  659.             lsr.l    #8,d4
  660.             eor.l    d0,d4
  661.             and.l    d5,d4
  662.             eor.l    d4,d0
  663.             lsl.l    #8,d4
  664.             eor.l    d4,d1
  665.  
  666.             move.l    a3,(-4,a1,d7.l)
  667.  
  668.             move.l    d3,d4
  669.             lsr.l    #8,d4
  670.             eor.l    d2,d4
  671.             and.l    d5,d4
  672.             eor.l    d4,d2
  673.             lsl.l    #8,d4
  674.             eor.l    d4,d3
  675.  
  676.             move.l    #$33333333,d5
  677.  
  678.             and.l    d5,d0
  679.             lsl.l    #2,d0
  680.             and.l    d5,d2
  681.             or.l    d0,d2
  682.  
  683.             and.l    d5,d1
  684.             lsl.l    #2,d1
  685.             and.l    d5,d3
  686.             or.l    d1,d3
  687.  
  688.             move.l    #$55555555,d5
  689.  
  690.             move.l    d3,d4
  691.             lsr.l    #1,d4
  692.             eor.l    d2,d4
  693.             and.l    d5,d4
  694.             eor.l    d4,d2
  695.             lsl.l    #1,d4
  696.             eor.l    d4,d3
  697.  
  698.             move.l    d2,a3
  699.             move.l    d3,a4
  700.  
  701.             sub.l    #1,d6
  702.             bne    .2
  703.  
  704.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  705.  
  706.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*2),a1
  707.  
  708. .2            cmp.l    a2,a0
  709.             bne    .1
  710.  
  711.             move.l    a4,(a1)
  712.             move.l    a3,(a1,d7.l)
  713.  
  714.             movem.l    (sp)+,d2-d7/a2-a4
  715.             rts
  716.  
  717. *-------------------------------------------------------------------------------
  718.  
  719. * IN: a0.l - Chunky Buffer Address
  720. *     a1.l - Delta Buffer Address
  721. *     a2.l - Planar Buffer Address
  722. *     a3.l - Line Skip Buffer Address
  723. *     d0.l - Bitplane Byte Width
  724.  
  725. d_2            movem.l    d2-d7/a2-a4,-(sp)
  726.  
  727.             move.l    a0,(C2P_ChunkyBufferAddress)
  728.             move.l    a1,(C2P_DeltaBufferAddress)
  729.             move.l    a2,(C2P_PlanarBufferAddress)
  730.             move.l    a3,(C2P_LineSkipBufferAddress)
  731.             move.l    d0,(C2P_BitplaneByteWidth)
  732.  
  733.  
  734.  
  735.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  736.             move.l    (C2P_DeltaBufferAddress,pc),a1
  737.             move.l    (C2P_PlanarBufferAddress,pc),a2
  738.             move.l    (C2P_LineSkipBufferAddress),a3
  739.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  740.  
  741.             move.l    (C2P_BitplaneByteWidth,pc),d7
  742.  
  743. .12            tst.b    (a3)+
  744.             beq    .14
  745.  
  746.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  747.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  748.  
  749.             lea    (a2,d7.l*2),a2
  750.  
  751.             bra    .13
  752.  
  753. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  754.  
  755. .11            cmp.l    (a0)+,(a1)+
  756.             bne    .1
  757.             cmp.l    (a0)+,(a1)+
  758.             bne    .2
  759.             cmp.l    (a0)+,(a1)+
  760.             bne    .3
  761.             cmp.l    (a0)+,(a1)+
  762.             bne    .4
  763.             cmp.l    (a0)+,(a1)+
  764.             bne    .5
  765.             cmp.l    (a0)+,(a1)+
  766.             bne    .6
  767.             cmp.l    (a0)+,(a1)+
  768.             bne    .7
  769.             cmp.l    (a0)+,(a1)+
  770.             bne    .8
  771.  
  772. .10            add.l    #4,a2
  773.  
  774.             sub.l    #1,d6
  775.             bne    .11
  776.  
  777.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l*2),a2
  778.  
  779. .13            cmp.l    a4,a0
  780.             bne    .12
  781.  
  782.             movem.l    (sp)+,d2-d7/a2-a4
  783.             rts
  784.  
  785. .1            sub.l    #1*4,a0
  786.             add.l    #7*4,a1
  787.             bra    .9
  788.  
  789. .2            sub.l    #2*4,a0
  790.             add.l    #6*4,a1
  791.             bra    .9
  792.  
  793. .3            sub.l    #3*4,a0
  794.             add.l    #5*4,a1
  795.             bra    .9
  796.  
  797. .4            sub.l    #4*4,a0
  798.             add.l    #4*4,a1
  799.             bra    .9
  800.  
  801. .5            sub.l    #5*4,a0
  802.             add.l    #3*4,a1
  803.             bra    .9
  804.  
  805. .6            sub.l    #6*4,a0
  806.             add.l    #2*4,a1
  807.             bra    .9
  808.  
  809. .7            sub.l    #7*4,a0
  810.             add.l    #1*4,a1
  811.             bra    .9
  812.  
  813. .8            sub.l    #8*4,a0
  814.             add.l    #0*4,a1
  815.             bra    .9
  816.  
  817. .9            move.l    #$0F0F0F0F,d5
  818.  
  819.             move.l    (a0)+,d0
  820.             and.l    d5,d0
  821.             lsl.l    #4,d0
  822.             move.l    (a0)+,d1
  823.             and.l    d5,d1
  824.             or.l    d1,d0
  825.  
  826.             move.l    (a0)+,d1
  827.             and.l    d5,d1
  828.             lsl.l    #4,d1
  829.             move.l    (a0)+,d2
  830.             and.l    d5,d2
  831.             or.l    d2,d1
  832.  
  833.             move.l    (a0)+,d2
  834.             and.l    d5,d2
  835.             lsl.l    #4,d2
  836.             move.l    (a0)+,d3
  837.             and.l    d5,d3
  838.             or.l    d3,d2
  839.  
  840.             move.l    (a0)+,d3
  841.             and.l    d5,d3
  842.             lsl.l    #4,d3
  843.             move.l    (a0)+,d4
  844.             and.l    d5,d4
  845.             or.l    d4,d3
  846.  
  847.             move.w    d2,d4
  848.             move.w    d0,d2
  849.             swap    d2
  850.             move.w    d2,d0
  851.             move.w    d4,d2
  852.  
  853.             move.w    d3,d4
  854.             move.w    d1,d3
  855.             swap    d3
  856.             move.w    d3,d1
  857.             move.w    d4,d3
  858.  
  859.             move.l    #$00FF00FF,d5
  860.  
  861.             move.l    d1,d4
  862.             lsr.l    #8,d4
  863.             eor.l    d0,d4
  864.             and.l    d5,d4
  865.             eor.l    d4,d0
  866.             lsl.l    #8,d4
  867.             eor.l    d4,d1
  868.  
  869.             move.l    d3,d4
  870.             lsr.l    #8,d4
  871.             eor.l    d2,d4
  872.             and.l    d5,d4
  873.             eor.l    d4,d2
  874.             lsl.l    #8,d4
  875.             eor.l    d4,d3
  876.  
  877.             move.l    #$33333333,d5
  878.  
  879.             and.l    d5,d0
  880.             lsl.l    #2,d0
  881.             and.l    d5,d2
  882.             or.l    d0,d2
  883.  
  884.             and.l    d5,d1
  885.             lsl.l    #2,d1
  886.             and.l    d5,d3
  887.             or.l    d1,d3
  888.  
  889.             move.l    #$55555555,d5
  890.  
  891.             move.l    d3,d4
  892.             lsr.l    #1,d4
  893.             eor.l    d2,d4
  894.             and.l    d5,d4
  895.             eor.l    d4,d2
  896.  
  897.             move.l    d2,(a2,d7.l)
  898.  
  899.             lsl.l    #1,d4
  900.             eor.l    d4,d3
  901.  
  902.             move.l    d3,(a2)
  903.  
  904.             bra    .10
  905.  
  906. *-------------------------------------------------------------------------------
  907.  
  908. *-------------------------------------------------------------------------------
  909.  
  910. * IN: a0.l - Chunky Buffer Address
  911. *     a1.l - Planar Buffer Address
  912. *     d0.l - Bitplane Byte Width
  913.  
  914. f_3            movem.l    d2-d7/a2-a5,-(sp)
  915.  
  916.             move.l    a0,(C2P_ChunkyBufferAddress)
  917.             move.l    a1,(C2P_PlanarBufferAddress)
  918.             move.l    d0,(C2P_BitplaneByteWidth)
  919.  
  920.  
  921.  
  922.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  923.             move.l    (C2P_PlanarBufferAddress,pc),a1
  924.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  925.  
  926.             move.l    (C2P_BitplaneByteWidth,pc),d7
  927.  
  928.             move.l    #$0F0F0F0F,d5
  929.  
  930.             move.l    (a0)+,d0
  931.             and.l    d5,d0
  932.             lsl.l    #4,d0
  933.             move.l    (a0)+,d1
  934.             and.l    d5,d1
  935.             or.l    d1,d0
  936.  
  937.             move.l    (a0)+,d1
  938.             and.l    d5,d1
  939.             lsl.l    #4,d1
  940.             move.l    (a0)+,d2
  941.             and.l    d5,d2
  942.             or.l    d2,d1
  943.  
  944.             move.l    (a0)+,d2
  945.             and.l    d5,d2
  946.             lsl.l    #4,d2
  947.             move.l    (a0)+,d3
  948.             and.l    d5,d3
  949.             or.l    d3,d2
  950.  
  951.             move.l    (a0)+,d3
  952.             and.l    d5,d3
  953.             lsl.l    #4,d3
  954.             move.l    (a0)+,d4
  955.             and.l    d5,d4
  956.             or.l    d4,d3
  957.  
  958.             move.w    d2,d4
  959.             move.w    d0,d2
  960.             swap    d2
  961.             move.w    d2,d0
  962.             move.w    d4,d2
  963.  
  964.             move.w    d3,d4
  965.             move.w    d1,d3
  966.             swap    d3
  967.             move.w    d3,d1
  968.             move.w    d4,d3
  969.  
  970.             move.l    #$00FF00FF,d5
  971.  
  972.             move.l    d1,d4
  973.             lsr.l    #8,d4
  974.             eor.l    d0,d4
  975.             and.l    d5,d4
  976.             eor.l    d4,d0
  977.             lsl.l    #8,d4
  978.             eor.l    d4,d1
  979.  
  980.             move.l    d3,d4
  981.             lsr.l    #8,d4
  982.             eor.l    d2,d4
  983.             and.l    d5,d4
  984.             eor.l    d4,d2
  985.             lsl.l    #8,d4
  986.             eor.l    d4,d3
  987.  
  988.             move.l    #$33333333,d5
  989.  
  990.             move.l    d2,d4
  991.             lsr.l    #2,d4
  992.             eor.l    d0,d4
  993.             and.l    d5,d4
  994.             eor.l    d4,d0
  995.             lsl.l    #2,d4
  996.             eor.l    d4,d2
  997.  
  998.             move.l    d3,d4
  999.             lsr.l    #2,d4
  1000.             eor.l    d1,d4
  1001.             and.l    d5,d4
  1002.             eor.l    d4,d1
  1003.             lsl.l    #2,d4
  1004.             eor.l    d4,d3
  1005.  
  1006.             move.l    #$55555555,d5
  1007.  
  1008.             and.l    d5,d0
  1009.             lsl.l    #1,d0
  1010.             and.l    d5,d1
  1011.             or.l    d0,d1
  1012.  
  1013.             move.l    d3,d4
  1014.             lsr.l    #1,d4
  1015.             eor.l    d2,d4
  1016.             and.l    d5,d4
  1017.             eor.l    d4,d2
  1018.             lsl.l    #1,d4
  1019.             eor.l    d4,d3
  1020.  
  1021.             move.l    d1,a3
  1022.             move.l    d2,a4
  1023.             move.l    d3,a5
  1024.  
  1025.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  1026.  
  1027. .1            move.l    #$0F0F0F0F,d5
  1028.  
  1029.             move.l    (a0)+,d0
  1030.             and.l    d5,d0
  1031.             lsl.l    #4,d0
  1032.             move.l    (a0)+,d1
  1033.             and.l    d5,d1
  1034.             or.l    d1,d0
  1035.  
  1036.             move.l    (a0)+,d1
  1037.             and.l    d5,d1
  1038.             lsl.l    #4,d1
  1039.             move.l    (a0)+,d2
  1040.             and.l    d5,d2
  1041.             or.l    d2,d1
  1042.  
  1043.             move.l    (a0)+,d2
  1044.             and.l    d5,d2
  1045.             lsl.l    #4,d2
  1046.             move.l    (a0)+,d3
  1047.             and.l    d5,d3
  1048.             or.l    d3,d2
  1049.  
  1050.             move.l    (a0)+,d3
  1051.             and.l    d5,d3
  1052.             lsl.l    #4,d3
  1053.             move.l    (a0)+,d4
  1054.             and.l    d5,d4
  1055.             or.l    d4,d3
  1056.  
  1057.             move.l    a5,(a1)+
  1058.  
  1059.             move.w    d2,d4
  1060.             move.w    d0,d2
  1061.             swap    d2
  1062.             move.w    d2,d0
  1063.             move.w    d4,d2
  1064.  
  1065.             move.w    d3,d4
  1066.             move.w    d1,d3
  1067.             swap    d3
  1068.             move.w    d3,d1
  1069.             move.w    d4,d3
  1070.  
  1071.             move.l    #$00FF00FF,d5
  1072.  
  1073.             move.l    d1,d4
  1074.             lsr.l    #8,d4
  1075.             eor.l    d0,d4
  1076.             and.l    d5,d4
  1077.             eor.l    d4,d0
  1078.             lsl.l    #8,d4
  1079.             eor.l    d4,d1
  1080.  
  1081.             move.l    a4,(-4,a1,d7.l)
  1082.  
  1083.             move.l    d3,d4
  1084.             lsr.l    #8,d4
  1085.             eor.l    d2,d4
  1086.             and.l    d5,d4
  1087.             eor.l    d4,d2
  1088.             lsl.l    #8,d4
  1089.             eor.l    d4,d3
  1090.  
  1091.             move.l    #$33333333,d5
  1092.  
  1093.             move.l    d2,d4
  1094.             lsr.l    #2,d4
  1095.             eor.l    d0,d4
  1096.             and.l    d5,d4
  1097.             eor.l    d4,d0
  1098.             lsl.l    #2,d4
  1099.             eor.l    d4,d2
  1100.  
  1101.             move.l    a3,(-4,a1,d7.l*2)
  1102.  
  1103.             move.l    d3,d4
  1104.             lsr.l    #2,d4
  1105.             eor.l    d1,d4
  1106.             and.l    d5,d4
  1107.             eor.l    d4,d1
  1108.             lsl.l    #2,d4
  1109.             eor.l    d4,d3
  1110.  
  1111.             move.l    #$55555555,d5
  1112.  
  1113.             and.l    d5,d0
  1114.             lsl.l    #1,d0
  1115.             and.l    d5,d1
  1116.             or.l    d0,d1
  1117.  
  1118.             move.l    d3,d4
  1119.             lsr.l    #1,d4
  1120.             eor.l    d2,d4
  1121.             and.l    d5,d4
  1122.             eor.l    d4,d2
  1123.             lsl.l    #1,d4
  1124.             eor.l    d4,d3
  1125.  
  1126.             move.l    d1,a3
  1127.             move.l    d2,a4
  1128.             move.l    d3,a5
  1129.  
  1130.             sub.l    #1,d6
  1131.             bne    .2
  1132.  
  1133.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  1134.  
  1135.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*2),a1
  1136.             add.l    d7,a1
  1137.  
  1138. .2            cmp.l    a2,a0
  1139.             bne    .1
  1140.  
  1141.             move.l    a5,(a1)
  1142.             move.l    a4,(a1,d7.l)
  1143.             move.l    a3,(a1,d7.l*2)
  1144.  
  1145.             movem.l    (sp)+,d2-d7/a2-a5
  1146.             rts
  1147.  
  1148. *-------------------------------------------------------------------------------
  1149.  
  1150. * IN: a0.l - Chunky Buffer Address
  1151. *     a1.l - Delta Buffer Address
  1152. *     a2.l - Planar Buffer Address
  1153. *     a3.l - Line Skip Buffer Address
  1154. *     d0.l - Bitplane Byte Width
  1155.  
  1156. d_3            movem.l    d2-d7/a2-a4,-(sp)
  1157.  
  1158.             move.l    a0,(C2P_ChunkyBufferAddress)
  1159.             move.l    a1,(C2P_DeltaBufferAddress)
  1160.             move.l    a2,(C2P_PlanarBufferAddress)
  1161.             move.l    a3,(C2P_LineSkipBufferAddress)
  1162.             move.l    d0,(C2P_BitplaneByteWidth)
  1163.  
  1164.  
  1165.  
  1166.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  1167.             move.l    (C2P_DeltaBufferAddress,pc),a1
  1168.             move.l    (C2P_PlanarBufferAddress,pc),a2
  1169.             move.l    (C2P_LineSkipBufferAddress),a3
  1170.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  1171.  
  1172.             move.l    (C2P_BitplaneByteWidth,pc),d7
  1173.  
  1174. .12            tst.b    (a3)+
  1175.             beq    .14
  1176.  
  1177.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  1178.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  1179.  
  1180.             lea    (a2,d7.l*2),a2
  1181.             add.l    d7,a2
  1182.  
  1183.             bra    .13
  1184.  
  1185. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  1186.  
  1187. .11            cmp.l    (a0)+,(a1)+
  1188.             bne    .1
  1189.             cmp.l    (a0)+,(a1)+
  1190.             bne    .2
  1191.             cmp.l    (a0)+,(a1)+
  1192.             bne    .3
  1193.             cmp.l    (a0)+,(a1)+
  1194.             bne    .4
  1195.             cmp.l    (a0)+,(a1)+
  1196.             bne    .5
  1197.             cmp.l    (a0)+,(a1)+
  1198.             bne    .6
  1199.             cmp.l    (a0)+,(a1)+
  1200.             bne    .7
  1201.             cmp.l    (a0)+,(a1)+
  1202.             bne    .8
  1203.  
  1204. .10            add.l    #4,a2
  1205.  
  1206.             sub.l    #1,d6
  1207.             bne    .11
  1208.  
  1209.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l*2),a2
  1210.             add.l    d7,a2
  1211.  
  1212. .13            cmp.l    a4,a0
  1213.             bne    .12
  1214.  
  1215.             movem.l    (sp)+,d2-d7/a2-a4
  1216.             rts
  1217.  
  1218. .1            sub.l    #1*4,a0
  1219.             add.l    #7*4,a1
  1220.             bra    .9
  1221.  
  1222. .2            sub.l    #2*4,a0
  1223.             add.l    #6*4,a1
  1224.             bra    .9
  1225.  
  1226. .3            sub.l    #3*4,a0
  1227.             add.l    #5*4,a1
  1228.             bra    .9
  1229.  
  1230. .4            sub.l    #4*4,a0
  1231.             add.l    #4*4,a1
  1232.             bra    .9
  1233.  
  1234. .5            sub.l    #5*4,a0
  1235.             add.l    #3*4,a1
  1236.             bra    .9
  1237.  
  1238. .6            sub.l    #6*4,a0
  1239.             add.l    #2*4,a1
  1240.             bra    .9
  1241.  
  1242. .7            sub.l    #7*4,a0
  1243.             add.l    #1*4,a1
  1244.             bra    .9
  1245.  
  1246. .8            sub.l    #8*4,a0
  1247.             add.l    #0*4,a1
  1248.             bra    .9
  1249.  
  1250. .9            move.l    #$0F0F0F0F,d5
  1251.  
  1252.             move.l    (a0)+,d0
  1253.             and.l    d5,d0
  1254.             lsl.l    #4,d0
  1255.             move.l    (a0)+,d1
  1256.             and.l    d5,d1
  1257.             or.l    d1,d0
  1258.  
  1259.             move.l    (a0)+,d1
  1260.             and.l    d5,d1
  1261.             lsl.l    #4,d1
  1262.             move.l    (a0)+,d2
  1263.             and.l    d5,d2
  1264.             or.l    d2,d1
  1265.  
  1266.             move.l    (a0)+,d2
  1267.             and.l    d5,d2
  1268.             lsl.l    #4,d2
  1269.             move.l    (a0)+,d3
  1270.             and.l    d5,d3
  1271.             or.l    d3,d2
  1272.  
  1273.             move.l    (a0)+,d3
  1274.             and.l    d5,d3
  1275.             lsl.l    #4,d3
  1276.             move.l    (a0)+,d4
  1277.             and.l    d5,d4
  1278.             or.l    d4,d3
  1279.  
  1280.             move.w    d2,d4
  1281.             move.w    d0,d2
  1282.             swap    d2
  1283.             move.w    d2,d0
  1284.             move.w    d4,d2
  1285.  
  1286.             move.w    d3,d4
  1287.             move.w    d1,d3
  1288.             swap    d3
  1289.             move.w    d3,d1
  1290.             move.w    d4,d3
  1291.  
  1292.             move.l    #$00FF00FF,d5
  1293.  
  1294.             move.l    d1,d4
  1295.             lsr.l    #8,d4
  1296.             eor.l    d0,d4
  1297.             and.l    d5,d4
  1298.             eor.l    d4,d0
  1299.             lsl.l    #8,d4
  1300.             eor.l    d4,d1
  1301.  
  1302.             move.l    d3,d4
  1303.             lsr.l    #8,d4
  1304.             eor.l    d2,d4
  1305.             and.l    d5,d4
  1306.             eor.l    d4,d2
  1307.             lsl.l    #8,d4
  1308.             eor.l    d4,d3
  1309.  
  1310.             move.l    #$33333333,d5
  1311.  
  1312.             move.l    d2,d4
  1313.             lsr.l    #2,d4
  1314.             eor.l    d0,d4
  1315.             and.l    d5,d4
  1316.             eor.l    d4,d0
  1317.             lsl.l    #2,d4
  1318.             eor.l    d4,d2
  1319.  
  1320.             move.l    d3,d4
  1321.             lsr.l    #2,d4
  1322.             eor.l    d1,d4
  1323.             and.l    d5,d4
  1324.             eor.l    d4,d1
  1325.             lsl.l    #2,d4
  1326.             eor.l    d4,d3
  1327.  
  1328.             move.l    #$55555555,d5
  1329.  
  1330.             and.l    d5,d0
  1331.             lsl.l    #1,d0
  1332.             and.l    d5,d1
  1333.             or.l    d0,d1
  1334.  
  1335.             move.l    d1,(a2,d7.l*2)
  1336.  
  1337.             move.l    d3,d4
  1338.             lsr.l    #1,d4
  1339.             eor.l    d2,d4
  1340.             and.l    d5,d4
  1341.             eor.l    d4,d2
  1342.  
  1343.             move.l    d2,(a2,d7.l)
  1344.  
  1345.             lsl.l    #1,d4
  1346.             eor.l    d4,d3
  1347.  
  1348.             move.l    d3,(a2)
  1349.  
  1350.             bra    .10
  1351.  
  1352. *-------------------------------------------------------------------------------
  1353.  
  1354. *-------------------------------------------------------------------------------
  1355.  
  1356. * IN: a0.l - Chunky Buffer Address
  1357. *     a1.l - Planar Buffer Address
  1358. *     d0.l - Bitplane Byte Width
  1359.  
  1360. f_4            movem.l    d2-d7/a2-a6,-(sp)
  1361.  
  1362.             move.l    a0,(C2P_ChunkyBufferAddress)
  1363.             move.l    a1,(C2P_PlanarBufferAddress)
  1364.             move.l    d0,(C2P_BitplaneByteWidth)
  1365.  
  1366.  
  1367.  
  1368.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  1369.             move.l    (C2P_PlanarBufferAddress,pc),a1
  1370.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  1371.  
  1372.             move.l    (C2P_BitplaneByteWidth,pc),d7
  1373.  
  1374.             move.l    #$0F0F0F0F,d5
  1375.  
  1376.             move.l    (a0)+,d0
  1377.             and.l    d5,d0
  1378.             lsl.l    #4,d0
  1379.             move.l    (a0)+,d1
  1380.             and.l    d5,d1
  1381.             or.l    d1,d0
  1382.  
  1383.             move.l    (a0)+,d1
  1384.             and.l    d5,d1
  1385.             lsl.l    #4,d1
  1386.             move.l    (a0)+,d2
  1387.             and.l    d5,d2
  1388.             or.l    d2,d1
  1389.  
  1390.             move.l    (a0)+,d2
  1391.             and.l    d5,d2
  1392.             lsl.l    #4,d2
  1393.             move.l    (a0)+,d3
  1394.             and.l    d5,d3
  1395.             or.l    d3,d2
  1396.  
  1397.             move.l    (a0)+,d3
  1398.             and.l    d5,d3
  1399.             lsl.l    #4,d3
  1400.             move.l    (a0)+,d4
  1401.             and.l    d5,d4
  1402.             or.l    d4,d3
  1403.  
  1404.             move.w    d2,d4
  1405.             move.w    d0,d2
  1406.             swap    d2
  1407.             move.w    d2,d0
  1408.             move.w    d4,d2
  1409.  
  1410.             move.w    d3,d4
  1411.             move.w    d1,d3
  1412.             swap    d3
  1413.             move.w    d3,d1
  1414.             move.w    d4,d3
  1415.  
  1416.             move.l    #$00FF00FF,d5
  1417.  
  1418.             move.l    d1,d4
  1419.             lsr.l    #8,d4
  1420.             eor.l    d0,d4
  1421.             and.l    d5,d4
  1422.             eor.l    d4,d0
  1423.             lsl.l    #8,d4
  1424.             eor.l    d4,d1
  1425.  
  1426.             move.l    d3,d4
  1427.             lsr.l    #8,d4
  1428.             eor.l    d2,d4
  1429.             and.l    d5,d4
  1430.             eor.l    d4,d2
  1431.             lsl.l    #8,d4
  1432.             eor.l    d4,d3
  1433.  
  1434.             move.l    #$33333333,d5
  1435.  
  1436.             move.l    d2,d4
  1437.             lsr.l    #2,d4
  1438.             eor.l    d0,d4
  1439.             and.l    d5,d4
  1440.             eor.l    d4,d0
  1441.             lsl.l    #2,d4
  1442.             eor.l    d4,d2
  1443.  
  1444.             move.l    d3,d4
  1445.             lsr.l    #2,d4
  1446.             eor.l    d1,d4
  1447.             and.l    d5,d4
  1448.             eor.l    d4,d1
  1449.             lsl.l    #2,d4
  1450.             eor.l    d4,d3
  1451.  
  1452.             move.l    #$55555555,d5
  1453.  
  1454.             move.l    d1,d4
  1455.             lsr.l    #1,d4
  1456.             eor.l    d0,d4
  1457.             and.l    d5,d4
  1458.             eor.l    d4,d0
  1459.             lsl.l    #1,d4
  1460.             eor.l    d4,d1
  1461.  
  1462.             move.l    d3,d4
  1463.             lsr.l    #1,d4
  1464.             eor.l    d2,d4
  1465.             and.l    d5,d4
  1466.             eor.l    d4,d2
  1467.             lsl.l    #1,d4
  1468.             eor.l    d4,d3
  1469.  
  1470.             move.l    d0,a3
  1471.             move.l    d1,a4
  1472.             move.l    d2,a5
  1473.             move.l    d3,a6
  1474.  
  1475.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  1476.  
  1477. .1            move.l    #$0F0F0F0F,d5
  1478.  
  1479.             move.l    (a0)+,d0
  1480.             and.l    d5,d0
  1481.             lsl.l    #4,d0
  1482.             move.l    (a0)+,d1
  1483.             and.l    d5,d1
  1484.             or.l    d1,d0
  1485.  
  1486.             move.l    (a0)+,d1
  1487.             and.l    d5,d1
  1488.             lsl.l    #4,d1
  1489.             move.l    (a0)+,d2
  1490.             and.l    d5,d2
  1491.             or.l    d2,d1
  1492.  
  1493.             move.l    (a0)+,d2
  1494.             and.l    d5,d2
  1495.             lsl.l    #4,d2
  1496.             move.l    (a0)+,d3
  1497.             and.l    d5,d3
  1498.             or.l    d3,d2
  1499.  
  1500.             move.l    (a0)+,d3
  1501.             and.l    d5,d3
  1502.             lsl.l    #4,d3
  1503.             move.l    (a0)+,d4
  1504.             and.l    d5,d4
  1505.             or.l    d4,d3
  1506.  
  1507.             move.l    a6,(a1)+
  1508.  
  1509.             move.w    d2,d4
  1510.             move.w    d0,d2
  1511.             swap    d2
  1512.             move.w    d2,d0
  1513.             move.w    d4,d2
  1514.  
  1515.             move.w    d3,d4
  1516.             move.w    d1,d3
  1517.             swap    d3
  1518.             move.w    d3,d1
  1519.             move.w    d4,d3
  1520.  
  1521.             move.l    #$00FF00FF,d5
  1522.  
  1523.             move.l    d1,d4
  1524.             lsr.l    #8,d4
  1525.             eor.l    d0,d4
  1526.             and.l    d5,d4
  1527.             eor.l    d4,d0
  1528.             lsl.l    #8,d4
  1529.             eor.l    d4,d1
  1530.  
  1531.             move.l    a5,(-4,a1,d7.l)
  1532.  
  1533.             move.l    d3,d4
  1534.             lsr.l    #8,d4
  1535.             eor.l    d2,d4
  1536.             and.l    d5,d4
  1537.             eor.l    d4,d2
  1538.             lsl.l    #8,d4
  1539.             eor.l    d4,d3
  1540.  
  1541.             move.l    #$33333333,d5
  1542.  
  1543.             move.l    d2,d4
  1544.             lsr.l    #2,d4
  1545.             eor.l    d0,d4
  1546.             and.l    d5,d4
  1547.             eor.l    d4,d0
  1548.             lsl.l    #2,d4
  1549.             eor.l    d4,d2
  1550.  
  1551.             move.l    a4,(-4,a1,d7.l*2)
  1552.  
  1553.             move.l    d3,d4
  1554.             lsr.l    #2,d4
  1555.             eor.l    d1,d4
  1556.             and.l    d5,d4
  1557.             eor.l    d4,d1
  1558.             lsl.l    #2,d4
  1559.             eor.l    d4,d3
  1560.  
  1561.             move.l    #$55555555,d5
  1562.  
  1563.             move.l    d1,d4
  1564.             lsr.l    #1,d4
  1565.             eor.l    d0,d4
  1566.             and.l    d5,d4
  1567.             eor.l    d4,d0
  1568.             lsl.l    #1,d4
  1569.             eor.l    d4,d1
  1570.  
  1571.             add.l    d7,a1
  1572.             move.l    a3,(-4,a1,d7.l*2)
  1573.             sub.l    d7,a1
  1574.  
  1575.             move.l    d3,d4
  1576.             lsr.l    #1,d4
  1577.             eor.l    d2,d4
  1578.             and.l    d5,d4
  1579.             eor.l    d4,d2
  1580.             lsl.l    #1,d4
  1581.             eor.l    d4,d3
  1582.  
  1583.             move.l    d0,a3
  1584.             move.l    d1,a4
  1585.             move.l    d2,a5
  1586.             move.l    d3,a6
  1587.  
  1588.             sub.l    #1,d6
  1589.             bne    .2
  1590.  
  1591.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  1592.  
  1593.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*4),a1
  1594.  
  1595. .2            cmp.l    a2,a0
  1596.             bne    .1
  1597.  
  1598.             move.l    a6,(a1)
  1599.             move.l    a5,(a1,d7.l)
  1600.             move.l    a4,(a1,d7.l*2)
  1601.             add.l    d7,a1
  1602.             move.l    a3,(a1,d7.l*2)
  1603.  
  1604.             movem.l    (sp)+,d2-d7/a2-a6
  1605.             rts
  1606.  
  1607. *-------------------------------------------------------------------------------
  1608.  
  1609. * IN: a0.l - Chunky Buffer Address
  1610. *     a1.l - Delta Buffer Address
  1611. *     a2.l - Planar Buffer Address
  1612. *     a3.l - Line Skip Buffer Address
  1613. *     d0.l - Bitplane Byte Width
  1614.  
  1615. d_4            movem.l    d2-d7/a2-a4,-(sp)
  1616.  
  1617.             move.l    a0,(C2P_ChunkyBufferAddress)
  1618.             move.l    a1,(C2P_DeltaBufferAddress)
  1619.             move.l    a2,(C2P_PlanarBufferAddress)
  1620.             move.l    a3,(C2P_LineSkipBufferAddress)
  1621.             move.l    d0,(C2P_BitplaneByteWidth)
  1622.  
  1623.  
  1624.  
  1625.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  1626.             move.l    (C2P_DeltaBufferAddress,pc),a1
  1627.             move.l    (C2P_PlanarBufferAddress,pc),a2
  1628.             move.l    (C2P_LineSkipBufferAddress),a3
  1629.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  1630.  
  1631.             move.l    (C2P_BitplaneByteWidth,pc),d7
  1632.  
  1633. .12            tst.b    (a3)+
  1634.             beq    .14
  1635.  
  1636.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  1637.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  1638.  
  1639.             lea    (a2,d7.l*4),a2
  1640.  
  1641.             bra    .13
  1642.  
  1643. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  1644.  
  1645. .11            cmp.l    (a0)+,(a1)+
  1646.             bne    .1
  1647.             cmp.l    (a0)+,(a1)+
  1648.             bne    .2
  1649.             cmp.l    (a0)+,(a1)+
  1650.             bne    .3
  1651.             cmp.l    (a0)+,(a1)+
  1652.             bne    .4
  1653.             cmp.l    (a0)+,(a1)+
  1654.             bne    .5
  1655.             cmp.l    (a0)+,(a1)+
  1656.             bne    .6
  1657.             cmp.l    (a0)+,(a1)+
  1658.             bne    .7
  1659.             cmp.l    (a0)+,(a1)+
  1660.             bne    .8
  1661.  
  1662. .10            add.l    #4,a2
  1663.  
  1664.             sub.l    #1,d6
  1665.             bne    .11
  1666.  
  1667.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l*4),a2
  1668.  
  1669. .13            cmp.l    a4,a0
  1670.             bne    .12
  1671.  
  1672.             movem.l    (sp)+,d2-d7/a2-a4
  1673.             rts
  1674.  
  1675. .1            sub.l    #1*4,a0
  1676.             add.l    #7*4,a1
  1677.             bra    .9
  1678.  
  1679. .2            sub.l    #2*4,a0
  1680.             add.l    #6*4,a1
  1681.             bra    .9
  1682.  
  1683. .3            sub.l    #3*4,a0
  1684.             add.l    #5*4,a1
  1685.             bra    .9
  1686.  
  1687. .4            sub.l    #4*4,a0
  1688.             add.l    #4*4,a1
  1689.             bra    .9
  1690.  
  1691. .5            sub.l    #5*4,a0
  1692.             add.l    #3*4,a1
  1693.             bra    .9
  1694.  
  1695. .6            sub.l    #6*4,a0
  1696.             add.l    #2*4,a1
  1697.             bra    .9
  1698.  
  1699. .7            sub.l    #7*4,a0
  1700.             add.l    #1*4,a1
  1701.             bra    .9
  1702.  
  1703. .8            sub.l    #8*4,a0
  1704.             add.l    #0*4,a1
  1705.             bra    .9
  1706.  
  1707. .9            move.l    #$0F0F0F0F,d5
  1708.  
  1709.             move.l    (a0)+,d0
  1710.             and.l    d5,d0
  1711.             lsl.l    #4,d0
  1712.             move.l    (a0)+,d1
  1713.             and.l    d5,d1
  1714.             or.l    d1,d0
  1715.  
  1716.             move.l    (a0)+,d1
  1717.             and.l    d5,d1
  1718.             lsl.l    #4,d1
  1719.             move.l    (a0)+,d2
  1720.             and.l    d5,d2
  1721.             or.l    d2,d1
  1722.  
  1723.             move.l    (a0)+,d2
  1724.             and.l    d5,d2
  1725.             lsl.l    #4,d2
  1726.             move.l    (a0)+,d3
  1727.             and.l    d5,d3
  1728.             or.l    d3,d2
  1729.  
  1730.             move.l    (a0)+,d3
  1731.             and.l    d5,d3
  1732.             lsl.l    #4,d3
  1733.             move.l    (a0)+,d4
  1734.             and.l    d5,d4
  1735.             or.l    d4,d3
  1736.  
  1737.             move.w    d2,d4
  1738.             move.w    d0,d2
  1739.             swap    d2
  1740.             move.w    d2,d0
  1741.             move.w    d4,d2
  1742.  
  1743.             move.w    d3,d4
  1744.             move.w    d1,d3
  1745.             swap    d3
  1746.             move.w    d3,d1
  1747.             move.w    d4,d3
  1748.  
  1749.             move.l    #$00FF00FF,d5
  1750.  
  1751.             move.l    d1,d4
  1752.             lsr.l    #8,d4
  1753.             eor.l    d0,d4
  1754.             and.l    d5,d4
  1755.             eor.l    d4,d0
  1756.             lsl.l    #8,d4
  1757.             eor.l    d4,d1
  1758.  
  1759.             move.l    d3,d4
  1760.             lsr.l    #8,d4
  1761.             eor.l    d2,d4
  1762.             and.l    d5,d4
  1763.             eor.l    d4,d2
  1764.             lsl.l    #8,d4
  1765.             eor.l    d4,d3
  1766.  
  1767.             move.l    #$33333333,d5
  1768.  
  1769.             move.l    d2,d4
  1770.             lsr.l    #2,d4
  1771.             eor.l    d0,d4
  1772.             and.l    d5,d4
  1773.             eor.l    d4,d0
  1774.             lsl.l    #2,d4
  1775.             eor.l    d4,d2
  1776.  
  1777.             move.l    d3,d4
  1778.             lsr.l    #2,d4
  1779.             eor.l    d1,d4
  1780.             and.l    d5,d4
  1781.             eor.l    d4,d1
  1782.             lsl.l    #2,d4
  1783.             eor.l    d4,d3
  1784.  
  1785.             move.l    #$55555555,d5
  1786.  
  1787.             move.l    d1,d4
  1788.             lsr.l    #1,d4
  1789.             eor.l    d0,d4
  1790.             and.l    d5,d4
  1791.             eor.l    d4,d0
  1792.  
  1793.             add.l    d7,a2
  1794.             move.l    d0,(a2,d7.l*2)
  1795.             sub.l    d7,a2
  1796.  
  1797.             lsl.l    #1,d4
  1798.             eor.l    d4,d1
  1799.  
  1800.             move.l    d1,(a2,d7.l*2)
  1801.  
  1802.             move.l    d3,d4
  1803.             lsr.l    #1,d4
  1804.             eor.l    d2,d4
  1805.             and.l    d5,d4
  1806.             eor.l    d4,d2
  1807.  
  1808.             move.l    d2,(a2,d7.l)
  1809.  
  1810.             lsl.l    #1,d4
  1811.             eor.l    d4,d3
  1812.  
  1813.             move.l    d3,(a2)
  1814.  
  1815.             bra    .10
  1816.  
  1817. *-------------------------------------------------------------------------------
  1818.  
  1819. *-------------------------------------------------------------------------------
  1820.  
  1821. * IN: a0.l - Chunky Buffer Address
  1822. *     a1.l - Planar Buffer Address
  1823. *     d0.l - Bitplane Byte Width
  1824.  
  1825. f_5            movem.l    d2-d7/a2-a6,-(sp)
  1826.  
  1827.             move.l    a0,(C2P_ChunkyBufferAddress)
  1828.             move.l    a1,(C2P_PlanarBufferAddress)
  1829.             move.l    d0,(C2P_BitplaneByteWidth)
  1830.  
  1831.  
  1832.  
  1833.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  1834.             move.l    (C2P_PlanarBufferAddress,pc),a1
  1835.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  1836.  
  1837.             move.l    (C2P_BitplaneByteWidth,pc),d7
  1838.  
  1839.             move.l    #$0F0F0F0F,d5
  1840.  
  1841.             move.l    (a0)+,d0
  1842.             and.l    d5,d0
  1843.             lsl.l    #4,d0
  1844.             move.l    (a0)+,d1
  1845.             and.l    d5,d1
  1846.             or.l    d1,d0
  1847.  
  1848.             move.l    (a0)+,d1
  1849.             and.l    d5,d1
  1850.             lsl.l    #4,d1
  1851.             move.l    (a0)+,d2
  1852.             and.l    d5,d2
  1853.             or.l    d2,d1
  1854.  
  1855.             move.l    (a0)+,d2
  1856.             and.l    d5,d2
  1857.             lsl.l    #4,d2
  1858.             move.l    (a0)+,d3
  1859.             and.l    d5,d3
  1860.             or.l    d3,d2
  1861.  
  1862.             move.l    (a0)+,d3
  1863.             and.l    d5,d3
  1864.             lsl.l    #4,d3
  1865.             move.l    (a0)+,d4
  1866.             and.l    d5,d4
  1867.             or.l    d4,d3
  1868.  
  1869.             move.w    d2,d4
  1870.             move.w    d0,d2
  1871.             swap    d2
  1872.             move.w    d2,d0
  1873.             move.w    d4,d2
  1874.  
  1875.             move.w    d3,d4
  1876.             move.w    d1,d3
  1877.             swap    d3
  1878.             move.w    d3,d1
  1879.             move.w    d4,d3
  1880.  
  1881.             move.l    #$00FF00FF,d5
  1882.  
  1883.             move.l    d1,d4
  1884.             lsr.l    #8,d4
  1885.             eor.l    d0,d4
  1886.             and.l    d5,d4
  1887.             eor.l    d4,d0
  1888.             lsl.l    #8,d4
  1889.             eor.l    d4,d1
  1890.  
  1891.             move.l    d3,d4
  1892.             lsr.l    #8,d4
  1893.             eor.l    d2,d4
  1894.             and.l    d5,d4
  1895.             eor.l    d4,d2
  1896.             lsl.l    #8,d4
  1897.             eor.l    d4,d3
  1898.  
  1899.             move.l    #$33333333,d5
  1900.  
  1901.             move.l    d2,d4
  1902.             lsr.l    #2,d4
  1903.             eor.l    d0,d4
  1904.             and.l    d5,d4
  1905.             eor.l    d4,d0
  1906.             lsl.l    #2,d4
  1907.             eor.l    d4,d2
  1908.  
  1909.             move.l    d3,d4
  1910.             lsr.l    #2,d4
  1911.             eor.l    d1,d4
  1912.             and.l    d5,d4
  1913.             eor.l    d4,d1
  1914.             lsl.l    #2,d4
  1915.             eor.l    d4,d3
  1916.  
  1917.             move.l    #$55555555,d5
  1918.  
  1919.             move.l    d1,d4
  1920.             lsr.l    #1,d4
  1921.             eor.l    d0,d4
  1922.             and.l    d5,d4
  1923.             eor.l    d4,d0
  1924.             lsl.l    #1,d4
  1925.             eor.l    d4,d1
  1926.  
  1927.             move.l    d3,d4
  1928.             lsr.l    #1,d4
  1929.             eor.l    d2,d4
  1930.             and.l    d5,d4
  1931.             eor.l    d4,d2
  1932.             lsl.l    #1,d4
  1933.             eor.l    d4,d3
  1934.  
  1935.             move.l    d0,a3
  1936.             move.l    d1,a4
  1937.             move.l    d2,a5
  1938.             move.l    d3,a6
  1939.  
  1940.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  1941.  
  1942. .1            move.l    #$0F0F0F0F,d5
  1943.  
  1944.             move.l    (a0)+,d0
  1945.             and.l    d5,d0
  1946.             lsl.l    #4,d0
  1947.             move.l    (a0)+,d1
  1948.             and.l    d5,d1
  1949.             or.l    d1,d0
  1950.  
  1951.             move.l    (a0)+,d1
  1952.             and.l    d5,d1
  1953.             lsl.l    #4,d1
  1954.             move.l    (a0)+,d2
  1955.             and.l    d5,d2
  1956.             or.l    d2,d1
  1957.  
  1958.             move.l    (a0)+,d2
  1959.             and.l    d5,d2
  1960.             lsl.l    #4,d2
  1961.             move.l    (a0)+,d3
  1962.             and.l    d5,d3
  1963.             or.l    d3,d2
  1964.  
  1965.             move.l    (a0)+,d3
  1966.             and.l    d5,d3
  1967.             lsl.l    #4,d3
  1968.             move.l    (a0)+,d4
  1969.             and.l    d5,d4
  1970.             or.l    d4,d3
  1971.  
  1972.             move.l    a6,(a1)+
  1973.  
  1974.             move.w    d2,d4
  1975.             move.w    d0,d2
  1976.             swap    d2
  1977.             move.w    d2,d0
  1978.             move.w    d4,d2
  1979.  
  1980.             move.w    d3,d4
  1981.             move.w    d1,d3
  1982.             swap    d3
  1983.             move.w    d3,d1
  1984.             move.w    d4,d3
  1985.  
  1986.             move.l    #$00FF00FF,d5
  1987.  
  1988.             move.l    d1,d4
  1989.             lsr.l    #8,d4
  1990.             eor.l    d0,d4
  1991.             and.l    d5,d4
  1992.             eor.l    d4,d0
  1993.             lsl.l    #8,d4
  1994.             eor.l    d4,d1
  1995.  
  1996.             move.l    a5,(-4,a1,d7.l)
  1997.  
  1998.             move.l    d3,d4
  1999.             lsr.l    #8,d4
  2000.             eor.l    d2,d4
  2001.             and.l    d5,d4
  2002.             eor.l    d4,d2
  2003.             lsl.l    #8,d4
  2004.             eor.l    d4,d3
  2005.  
  2006.             move.l    #$33333333,d5
  2007.  
  2008.             move.l    d2,d4
  2009.             lsr.l    #2,d4
  2010.             eor.l    d0,d4
  2011.             and.l    d5,d4
  2012.             eor.l    d4,d0
  2013.             lsl.l    #2,d4
  2014.             eor.l    d4,d2
  2015.  
  2016.             move.l    a4,(-4,a1,d7.l*2)
  2017.  
  2018.             move.l    d3,d4
  2019.             lsr.l    #2,d4
  2020.             eor.l    d1,d4
  2021.             and.l    d5,d4
  2022.             eor.l    d4,d1
  2023.             lsl.l    #2,d4
  2024.             eor.l    d4,d3
  2025.  
  2026.             move.l    #$55555555,d5
  2027.  
  2028.             move.l    d1,d4
  2029.             lsr.l    #1,d4
  2030.             eor.l    d0,d4
  2031.             and.l    d5,d4
  2032.             eor.l    d4,d0
  2033.             lsl.l    #1,d4
  2034.             eor.l    d4,d1
  2035.  
  2036.             add.l    d7,a1
  2037.             move.l    a3,(-4,a1,d7.l*2)
  2038.             sub.l    d7,a1
  2039.  
  2040.             move.l    d3,d4
  2041.             lsr.l    #1,d4
  2042.             eor.l    d2,d4
  2043.             and.l    d5,d4
  2044.             eor.l    d4,d2
  2045.             lsl.l    #1,d4
  2046.             eor.l    d4,d3
  2047.  
  2048.             move.l    d0,a3
  2049.             move.l    d1,a4
  2050.             move.l    d2,a5
  2051.             move.l    d3,a6
  2052.  
  2053.             sub.l    #1,d6
  2054.             bne    .2
  2055.  
  2056.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2057.  
  2058.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*4),a1
  2059.             add.l    d7,a1
  2060.  
  2061. .2            cmp.l    a2,a0
  2062.             bne    .1
  2063.  
  2064.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  2065.  
  2066.             move.l    #$F0F0F0F0,d5
  2067.  
  2068.             move.l    (a0)+,d0
  2069.             and.l    d5,d0
  2070.             move.l    (a0)+,d1
  2071.             and.l    d5,d1
  2072.             lsr.l    #4,d1
  2073.             or.l    d1,d0
  2074.  
  2075.             move.l    (a0)+,d1
  2076.             and.l    d5,d1
  2077.             move.l    (a0)+,d2
  2078.             and.l    d5,d2
  2079.             lsr.l    #4,d2
  2080.             or.l    d2,d1
  2081.  
  2082.             move.l    (a0)+,d2
  2083.             and.l    d5,d2
  2084.             move.l    (a0)+,d3
  2085.             and.l    d5,d3
  2086.             lsr.l    #4,d3
  2087.             or.l    d3,d2
  2088.  
  2089.             move.l    (a0)+,d3
  2090.             and.l    d5,d3
  2091.             move.l    (a0)+,d4
  2092.             and.l    d5,d4
  2093.             lsr.l    #4,d4
  2094.             or.l    d4,d3
  2095.  
  2096.             move.l    a6,(a1)+
  2097.  
  2098.             move.w    d2,d4
  2099.             move.w    d0,d2
  2100.             swap    d2
  2101.             move.w    d2,d0
  2102.             move.w    d4,d2
  2103.  
  2104.             move.w    d3,d4
  2105.             move.w    d1,d3
  2106.             swap    d3
  2107.             move.w    d3,d1
  2108.             move.w    d4,d3
  2109.  
  2110.             move.l    #$00FF00FF,d5
  2111.  
  2112.             move.l    a5,(-4,a1,d7.l)
  2113.  
  2114.             move.l    d1,d4
  2115.             lsr.l    #8,d4
  2116.             eor.l    d0,d4
  2117.             and.l    d5,d4
  2118.             eor.l    d4,d0
  2119.             lsl.l    #8,d4
  2120.             eor.l    d4,d1
  2121.  
  2122.             move.l    d3,d4
  2123.             lsr.l    #8,d4
  2124.             eor.l    d2,d4
  2125.             and.l    d5,d4
  2126.             eor.l    d4,d2
  2127.             lsl.l    #8,d4
  2128.             eor.l    d4,d3
  2129.  
  2130.             move.l    a4,(-4,a1,d7.l*2)
  2131.  
  2132.             move.l    #$55555555,d5
  2133.  
  2134.             and.l    d5,d0
  2135.             lsl.l    #3,d0
  2136.             and.l    d5,d1
  2137.             lsl.l    #2,d1
  2138.             and.l    d5,d2
  2139.             lsl.l    #1,d2
  2140.             and.l    d5,d3
  2141.             or.l    d0,d3
  2142.             or.l    d1,d3
  2143.             or.l    d2,d3
  2144.  
  2145.             add.l    d7,a1
  2146.             move.l    a3,(-4,a1,d7.l*2)
  2147.             sub.l    d7,a1
  2148.  
  2149.             move.l    d3,a6
  2150.  
  2151.             lea    ([C2P_PlanarBufferAddress,pc],d7.l*4),a1
  2152.  
  2153.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2154.  
  2155. .3            move.l    #$F0F0F0F0,d5
  2156.  
  2157.             move.l    (a0)+,d0
  2158.             and.l    d5,d0
  2159.             move.l    (a0)+,d1
  2160.             and.l    d5,d1
  2161.             lsr.l    #4,d1
  2162.             or.l    d1,d0
  2163.  
  2164.             move.l    (a0)+,d1
  2165.             and.l    d5,d1
  2166.             move.l    (a0)+,d2
  2167.             and.l    d5,d2
  2168.             lsr.l    #4,d2
  2169.             or.l    d2,d1
  2170.  
  2171.             move.l    (a0)+,d2
  2172.             and.l    d5,d2
  2173.             move.l    (a0)+,d3
  2174.             and.l    d5,d3
  2175.             lsr.l    #4,d3
  2176.             or.l    d3,d2
  2177.  
  2178.             move.l    (a0)+,d3
  2179.             and.l    d5,d3
  2180.             move.l    (a0)+,d4
  2181.             and.l    d5,d4
  2182.             lsr.l    #4,d4
  2183.             or.l    d4,d3
  2184.  
  2185.             move.l    a6,(a1)+
  2186.  
  2187.             move.w    d2,d4
  2188.             move.w    d0,d2
  2189.             swap    d2
  2190.             move.w    d2,d0
  2191.             move.w    d4,d2
  2192.  
  2193.             move.w    d3,d4
  2194.             move.w    d1,d3
  2195.             swap    d3
  2196.             move.w    d3,d1
  2197.             move.w    d4,d3
  2198.  
  2199.             move.l    #$00FF00FF,d5
  2200.  
  2201.             move.l    d1,d4
  2202.             lsr.l    #8,d4
  2203.             eor.l    d0,d4
  2204.             and.l    d5,d4
  2205.             eor.l    d4,d0
  2206.             lsl.l    #8,d4
  2207.             eor.l    d4,d1
  2208.  
  2209.             move.l    d3,d4
  2210.             lsr.l    #8,d4
  2211.             eor.l    d2,d4
  2212.             and.l    d5,d4
  2213.             eor.l    d4,d2
  2214.             lsl.l    #8,d4
  2215.             eor.l    d4,d3
  2216.  
  2217.             move.l    #$55555555,d5
  2218.  
  2219.             and.l    d5,d0
  2220.             lsl.l    #3,d0
  2221.             and.l    d5,d1
  2222.             lsl.l    #2,d1
  2223.             and.l    d5,d2
  2224.             lsl.l    #1,d2
  2225.             and.l    d5,d3
  2226.             or.l    d0,d3
  2227.             or.l    d1,d3
  2228.             or.l    d2,d3
  2229.  
  2230.             move.l    d3,a6
  2231.  
  2232.             sub.l    #1,d6
  2233.             bne    .4
  2234.  
  2235.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2236.  
  2237.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*4),a1
  2238.             add.l    d7,a1
  2239.  
  2240. .4            cmp.l    a2,a0
  2241.             bne    .3
  2242.  
  2243.             move.l    a6,(a1)
  2244.  
  2245.             movem.l    (sp)+,d2-d7/a2-a6
  2246.             rts
  2247.  
  2248. *-------------------------------------------------------------------------------
  2249.  
  2250. * IN: a0.l - Chunky Buffer Address
  2251. *     a1.l - Delta Buffer Address
  2252. *     a2.l - Planar Buffer Address
  2253. *     a3.l - Line Skip Buffer Address
  2254. *     d0.l - Bitplane Byte Width
  2255.  
  2256. d_5            movem.l    d2-d7/a2-a6,-(sp)
  2257.  
  2258.             move.l    a0,(C2P_ChunkyBufferAddress)
  2259.             move.l    a1,(C2P_DeltaBufferAddress)
  2260.             move.l    a2,(C2P_PlanarBufferAddress)
  2261.             move.l    a3,(C2P_LineSkipBufferAddress)
  2262.             move.l    d0,(C2P_BitplaneByteWidth)
  2263.  
  2264.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  2265.             move.l    a4,(C2P_ChunkyBufferEndAddress)
  2266.  
  2267.  
  2268.  
  2269.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  2270.             move.l    (C2P_DeltaBufferAddress,pc),a1
  2271.             move.l    (C2P_PlanarBufferAddress,pc),a2
  2272.             move.l    (C2P_LineSkipBufferAddress,pc),a3
  2273.  
  2274.             move.l    (C2P_BitplaneByteWidth,pc),d7
  2275.  
  2276. .12            tst.b    (a3)+
  2277.             beq    .14
  2278.  
  2279.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  2280.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  2281.  
  2282.             lea    (a2,d7.l*4),a2
  2283.             add.l    d7,a2
  2284.  
  2285.             bra    .13
  2286.  
  2287. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2288.  
  2289. .11            cmp.l    (a0)+,(a1)+
  2290.             bne    .1
  2291.             cmp.l    (a0)+,(a1)+
  2292.             bne    .2
  2293.             cmp.l    (a0)+,(a1)+
  2294.             bne    .3
  2295.             cmp.l    (a0)+,(a1)+
  2296.             bne    .4
  2297.             cmp.l    (a0)+,(a1)+
  2298.             bne    .5
  2299.             cmp.l    (a0)+,(a1)+
  2300.             bne    .6
  2301.             cmp.l    (a0)+,(a1)+
  2302.             bne    .7
  2303.             cmp.l    (a0)+,(a1)+
  2304.             bne    .8
  2305.  
  2306. .10            add.l    #4,a2
  2307.  
  2308.             sub.l    #1,d6
  2309.             bne    .11
  2310.  
  2311.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l*4),a2
  2312.             add.l    d7,a2
  2313.  
  2314. .13            cmp.l    (C2P_ChunkyBufferEndAddress,pc),a0
  2315.             bne    .12
  2316.  
  2317.             movem.l    (sp)+,d2-d7/a2-a6
  2318.             rts
  2319.  
  2320. .1            sub.l    #1*4,a0
  2321.             add.l    #7*4,a1
  2322.             bra    .9
  2323.  
  2324. .2            sub.l    #2*4,a0
  2325.             add.l    #6*4,a1
  2326.             bra    .9
  2327.  
  2328. .3            sub.l    #3*4,a0
  2329.             add.l    #5*4,a1
  2330.             bra    .9
  2331.  
  2332. .4            sub.l    #4*4,a0
  2333.             add.l    #4*4,a1
  2334.             bra    .9
  2335.  
  2336. .5            sub.l    #5*4,a0
  2337.             add.l    #3*4,a1
  2338.             bra    .9
  2339.  
  2340. .6            sub.l    #6*4,a0
  2341.             add.l    #2*4,a1
  2342.             bra    .9
  2343.  
  2344. .7            sub.l    #7*4,a0
  2345.             add.l    #1*4,a1
  2346.             bra    .9
  2347.  
  2348. .8            sub.l    #8*4,a0
  2349.             add.l    #0*4,a1
  2350.             bra    .9
  2351.  
  2352. .9            move.l    #$0F0F0F0F,d5
  2353.  
  2354.             move.l    (a0)+,d0
  2355.             and.l    d5,d0
  2356.             lsl.l    #4,d0
  2357.             move.l    (a0)+,d1
  2358.             and.l    d5,d1
  2359.             or.l    d1,d0
  2360.  
  2361.             move.l    (a0)+,d1
  2362.             and.l    d5,d1
  2363.             lsl.l    #4,d1
  2364.             move.l    (a0)+,d2
  2365.             and.l    d5,d2
  2366.             or.l    d2,d1
  2367.  
  2368.             move.l    (a0)+,d2
  2369.             and.l    d5,d2
  2370.             lsl.l    #4,d2
  2371.             move.l    (a0)+,d3
  2372.             and.l    d5,d3
  2373.             or.l    d3,d2
  2374.  
  2375.             move.l    (a0)+,d3
  2376.             and.l    d5,d3
  2377.             lsl.l    #4,d3
  2378.             move.l    (a0)+,d4
  2379.             and.l    d5,d4
  2380.             or.l    d4,d3
  2381.  
  2382.             move.w    d2,d4
  2383.             move.w    d0,d2
  2384.             swap    d2
  2385.             move.w    d2,d0
  2386.             move.w    d4,d2
  2387.  
  2388.             move.w    d3,d4
  2389.             move.w    d1,d3
  2390.             swap    d3
  2391.             move.w    d3,d1
  2392.             move.w    d4,d3
  2393.  
  2394.             move.l    #$00FF00FF,d5
  2395.  
  2396.             move.l    d1,d4
  2397.             lsr.l    #8,d4
  2398.             eor.l    d0,d4
  2399.             and.l    d5,d4
  2400.             eor.l    d4,d0
  2401.             lsl.l    #8,d4
  2402.             eor.l    d4,d1
  2403.  
  2404.             move.l    d3,d4
  2405.             lsr.l    #8,d4
  2406.             eor.l    d2,d4
  2407.             and.l    d5,d4
  2408.             eor.l    d4,d2
  2409.             lsl.l    #8,d4
  2410.             eor.l    d4,d3
  2411.  
  2412.             move.l    #$33333333,d5
  2413.  
  2414.             move.l    d2,d4
  2415.             lsr.l    #2,d4
  2416.             eor.l    d0,d4
  2417.             and.l    d5,d4
  2418.             eor.l    d4,d0
  2419.             lsl.l    #2,d4
  2420.             eor.l    d4,d2
  2421.  
  2422.             move.l    d3,d4
  2423.             lsr.l    #2,d4
  2424.             eor.l    d1,d4
  2425.             and.l    d5,d4
  2426.             eor.l    d4,d1
  2427.             lsl.l    #2,d4
  2428.             eor.l    d4,d3
  2429.  
  2430.             move.l    #$55555555,d5
  2431.  
  2432.             move.l    d1,d4
  2433.             lsr.l    #1,d4
  2434.             eor.l    d0,d4
  2435.             and.l    d5,d4
  2436.             eor.l    d4,d0
  2437.             lsl.l    #1,d4
  2438.             eor.l    d4,d1
  2439.  
  2440.             move.l    d1,(a2,d7.l*2)
  2441.  
  2442.             move.l    d3,d4
  2443.             lsr.l    #1,d4
  2444.             eor.l    d2,d4
  2445.             and.l    d5,d4
  2446.             eor.l    d4,d2
  2447.             lsl.l    #1,d4
  2448.             eor.l    d4,d3
  2449.  
  2450.             move.l    d0,a4
  2451.             move.l    d2,a5
  2452.             move.l    d3,a6
  2453.  
  2454.             sub.l    #8*4,a0
  2455.  
  2456.             move.l    #$F0F0F0F0,d5
  2457.  
  2458.             move.l    (a0)+,d0
  2459.             and.l    d5,d0
  2460.             move.l    (a0)+,d1
  2461.             and.l    d5,d1
  2462.             lsr.l    #4,d1
  2463.             or.l    d1,d0
  2464.  
  2465.             move.l    (a0)+,d1
  2466.             and.l    d5,d1
  2467.             move.l    (a0)+,d2
  2468.             and.l    d5,d2
  2469.             lsr.l    #4,d2
  2470.             or.l    d2,d1
  2471.  
  2472.             move.l    (a0)+,d2
  2473.             and.l    d5,d2
  2474.             move.l    (a0)+,d3
  2475.             and.l    d5,d3
  2476.             lsr.l    #4,d3
  2477.             or.l    d3,d2
  2478.  
  2479.             move.l    (a0)+,d3
  2480.             and.l    d5,d3
  2481.             move.l    (a0)+,d4
  2482.             and.l    d5,d4
  2483.             lsr.l    #4,d4
  2484.             or.l    d4,d3
  2485.  
  2486.             move.l    a6,(a2)
  2487.  
  2488.             move.w    d2,d4
  2489.             move.w    d0,d2
  2490.             swap    d2
  2491.             move.w    d2,d0
  2492.             move.w    d4,d2
  2493.  
  2494.             move.w    d3,d4
  2495.             move.w    d1,d3
  2496.             swap    d3
  2497.             move.w    d3,d1
  2498.             move.w    d4,d3
  2499.  
  2500.             move.l    #$00FF00FF,d5
  2501.  
  2502.             move.l    a5,(a2,d7.l)
  2503.  
  2504.             move.l    d1,d4
  2505.             lsr.l    #8,d4
  2506.             eor.l    d0,d4
  2507.             and.l    d5,d4
  2508.             eor.l    d4,d0
  2509.             lsl.l    #8,d4
  2510.             eor.l    d4,d1
  2511.  
  2512.             move.l    d3,d4
  2513.             lsr.l    #8,d4
  2514.             eor.l    d2,d4
  2515.             and.l    d5,d4
  2516.             eor.l    d4,d2
  2517.             lsl.l    #8,d4
  2518.             eor.l    d4,d3
  2519.  
  2520.             add.l    d7,a2
  2521.             move.l    a4,(a2,d7.l*2)
  2522.             sub.l    d7,a2
  2523.  
  2524.             move.l    #$55555555,d5
  2525.  
  2526.             and.l    d5,d0
  2527.             lsl.l    #3,d0
  2528.             and.l    d5,d1
  2529.             lsl.l    #2,d1
  2530.             and.l    d5,d2
  2531.             lsl.l    #1,d2
  2532.             and.l    d5,d3
  2533.             or.l    d0,d3
  2534.             or.l    d1,d3
  2535.             or.l    d2,d3
  2536.  
  2537.             move.l    d3,(a2,d7.l*4)
  2538.  
  2539.             bra    .10
  2540.  
  2541. *-------------------------------------------------------------------------------
  2542.  
  2543. *-------------------------------------------------------------------------------
  2544.  
  2545. * IN: a0.l - Chunky Buffer Address
  2546. *     a1.l - Planar Buffer Address
  2547. *     d0.l - Bitplane Byte Width
  2548.  
  2549. f_6            movem.l    d2-d7/a2-a6,-(sp)
  2550.  
  2551.             move.l    a0,(C2P_ChunkyBufferAddress)
  2552.             move.l    a1,(C2P_PlanarBufferAddress)
  2553.             move.l    d0,(C2P_BitplaneByteWidth)
  2554.  
  2555.  
  2556.  
  2557.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  2558.             move.l    (C2P_PlanarBufferAddress,pc),a1
  2559.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  2560.  
  2561.             move.l    (C2P_BitplaneByteWidth,pc),d7
  2562.  
  2563.             move.l    #$0F0F0F0F,d5
  2564.  
  2565.             move.l    (a0)+,d0
  2566.             and.l    d5,d0
  2567.             lsl.l    #4,d0
  2568.             move.l    (a0)+,d1
  2569.             and.l    d5,d1
  2570.             or.l    d1,d0
  2571.  
  2572.             move.l    (a0)+,d1
  2573.             and.l    d5,d1
  2574.             lsl.l    #4,d1
  2575.             move.l    (a0)+,d2
  2576.             and.l    d5,d2
  2577.             or.l    d2,d1
  2578.  
  2579.             move.l    (a0)+,d2
  2580.             and.l    d5,d2
  2581.             lsl.l    #4,d2
  2582.             move.l    (a0)+,d3
  2583.             and.l    d5,d3
  2584.             or.l    d3,d2
  2585.  
  2586.             move.l    (a0)+,d3
  2587.             and.l    d5,d3
  2588.             lsl.l    #4,d3
  2589.             move.l    (a0)+,d4
  2590.             and.l    d5,d4
  2591.             or.l    d4,d3
  2592.  
  2593.             move.w    d2,d4
  2594.             move.w    d0,d2
  2595.             swap    d2
  2596.             move.w    d2,d0
  2597.             move.w    d4,d2
  2598.  
  2599.             move.w    d3,d4
  2600.             move.w    d1,d3
  2601.             swap    d3
  2602.             move.w    d3,d1
  2603.             move.w    d4,d3
  2604.  
  2605.             move.l    #$00FF00FF,d5
  2606.  
  2607.             move.l    d1,d4
  2608.             lsr.l    #8,d4
  2609.             eor.l    d0,d4
  2610.             and.l    d5,d4
  2611.             eor.l    d4,d0
  2612.             lsl.l    #8,d4
  2613.             eor.l    d4,d1
  2614.  
  2615.             move.l    d3,d4
  2616.             lsr.l    #8,d4
  2617.             eor.l    d2,d4
  2618.             and.l    d5,d4
  2619.             eor.l    d4,d2
  2620.             lsl.l    #8,d4
  2621.             eor.l    d4,d3
  2622.  
  2623.             move.l    #$33333333,d5
  2624.  
  2625.             move.l    d2,d4
  2626.             lsr.l    #2,d4
  2627.             eor.l    d0,d4
  2628.             and.l    d5,d4
  2629.             eor.l    d4,d0
  2630.             lsl.l    #2,d4
  2631.             eor.l    d4,d2
  2632.  
  2633.             move.l    d3,d4
  2634.             lsr.l    #2,d4
  2635.             eor.l    d1,d4
  2636.             and.l    d5,d4
  2637.             eor.l    d4,d1
  2638.             lsl.l    #2,d4
  2639.             eor.l    d4,d3
  2640.  
  2641.             move.l    #$55555555,d5
  2642.  
  2643.             move.l    d1,d4
  2644.             lsr.l    #1,d4
  2645.             eor.l    d0,d4
  2646.             and.l    d5,d4
  2647.             eor.l    d4,d0
  2648.             lsl.l    #1,d4
  2649.             eor.l    d4,d1
  2650.  
  2651.             move.l    d3,d4
  2652.             lsr.l    #1,d4
  2653.             eor.l    d2,d4
  2654.             and.l    d5,d4
  2655.             eor.l    d4,d2
  2656.             lsl.l    #1,d4
  2657.             eor.l    d4,d3
  2658.  
  2659.             move.l    d0,a3
  2660.             move.l    d1,a4
  2661.             move.l    d2,a5
  2662.             move.l    d3,a6
  2663.  
  2664.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2665.  
  2666. .1            move.l    #$0F0F0F0F,d5
  2667.  
  2668.             move.l    (a0)+,d0
  2669.             and.l    d5,d0
  2670.             lsl.l    #4,d0
  2671.             move.l    (a0)+,d1
  2672.             and.l    d5,d1
  2673.             or.l    d1,d0
  2674.  
  2675.             move.l    (a0)+,d1
  2676.             and.l    d5,d1
  2677.             lsl.l    #4,d1
  2678.             move.l    (a0)+,d2
  2679.             and.l    d5,d2
  2680.             or.l    d2,d1
  2681.  
  2682.             move.l    (a0)+,d2
  2683.             and.l    d5,d2
  2684.             lsl.l    #4,d2
  2685.             move.l    (a0)+,d3
  2686.             and.l    d5,d3
  2687.             or.l    d3,d2
  2688.  
  2689.             move.l    (a0)+,d3
  2690.             and.l    d5,d3
  2691.             lsl.l    #4,d3
  2692.             move.l    (a0)+,d4
  2693.             and.l    d5,d4
  2694.             or.l    d4,d3
  2695.  
  2696.             move.l    a6,(a1)+
  2697.  
  2698.             move.w    d2,d4
  2699.             move.w    d0,d2
  2700.             swap    d2
  2701.             move.w    d2,d0
  2702.             move.w    d4,d2
  2703.  
  2704.             move.w    d3,d4
  2705.             move.w    d1,d3
  2706.             swap    d3
  2707.             move.w    d3,d1
  2708.             move.w    d4,d3
  2709.  
  2710.             move.l    #$00FF00FF,d5
  2711.  
  2712.             move.l    d1,d4
  2713.             lsr.l    #8,d4
  2714.             eor.l    d0,d4
  2715.             and.l    d5,d4
  2716.             eor.l    d4,d0
  2717.             lsl.l    #8,d4
  2718.             eor.l    d4,d1
  2719.  
  2720.             move.l    a5,(-4,a1,d7.l)
  2721.  
  2722.             move.l    d3,d4
  2723.             lsr.l    #8,d4
  2724.             eor.l    d2,d4
  2725.             and.l    d5,d4
  2726.             eor.l    d4,d2
  2727.             lsl.l    #8,d4
  2728.             eor.l    d4,d3
  2729.  
  2730.             move.l    #$33333333,d5
  2731.  
  2732.             move.l    d2,d4
  2733.             lsr.l    #2,d4
  2734.             eor.l    d0,d4
  2735.             and.l    d5,d4
  2736.             eor.l    d4,d0
  2737.             lsl.l    #2,d4
  2738.             eor.l    d4,d2
  2739.  
  2740.             move.l    a4,(-4,a1,d7.l*2)
  2741.  
  2742.             move.l    d3,d4
  2743.             lsr.l    #2,d4
  2744.             eor.l    d1,d4
  2745.             and.l    d5,d4
  2746.             eor.l    d4,d1
  2747.             lsl.l    #2,d4
  2748.             eor.l    d4,d3
  2749.  
  2750.             move.l    #$55555555,d5
  2751.  
  2752.             move.l    d1,d4
  2753.             lsr.l    #1,d4
  2754.             eor.l    d0,d4
  2755.             and.l    d5,d4
  2756.             eor.l    d4,d0
  2757.             lsl.l    #1,d4
  2758.             eor.l    d4,d1
  2759.  
  2760.             add.l    d7,a1
  2761.             move.l    a3,(-4,a1,d7.l*2)
  2762.             sub.l    d7,a1
  2763.  
  2764.             move.l    d3,d4
  2765.             lsr.l    #1,d4
  2766.             eor.l    d2,d4
  2767.             and.l    d5,d4
  2768.             eor.l    d4,d2
  2769.             lsl.l    #1,d4
  2770.             eor.l    d4,d3
  2771.  
  2772.             move.l    d0,a3
  2773.             move.l    d1,a4
  2774.             move.l    d2,a5
  2775.             move.l    d3,a6
  2776.  
  2777.             sub.l    #1,d6
  2778.             bne    .2
  2779.  
  2780.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2781.  
  2782.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*4),a1
  2783.             add.l    d7,a1
  2784.             add.l    d7,a1
  2785.  
  2786. .2            cmp.l    a2,a0
  2787.             bne    .1
  2788.  
  2789.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  2790.  
  2791.             move.l    #$F0F0F0F0,d5
  2792.  
  2793.             move.l    (a0)+,d0
  2794.             and.l    d5,d0
  2795.             move.l    (a0)+,d1
  2796.             and.l    d5,d1
  2797.             lsr.l    #4,d1
  2798.             or.l    d1,d0
  2799.  
  2800.             move.l    (a0)+,d1
  2801.             and.l    d5,d1
  2802.             move.l    (a0)+,d2
  2803.             and.l    d5,d2
  2804.             lsr.l    #4,d2
  2805.             or.l    d2,d1
  2806.  
  2807.             move.l    (a0)+,d2
  2808.             and.l    d5,d2
  2809.             move.l    (a0)+,d3
  2810.             and.l    d5,d3
  2811.             lsr.l    #4,d3
  2812.             or.l    d3,d2
  2813.  
  2814.             move.l    (a0)+,d3
  2815.             and.l    d5,d3
  2816.             move.l    (a0)+,d4
  2817.             and.l    d5,d4
  2818.             lsr.l    #4,d4
  2819.             or.l    d4,d3
  2820.  
  2821.             move.l    a6,(a1)+
  2822.  
  2823.             move.w    d2,d4
  2824.             move.w    d0,d2
  2825.             swap    d2
  2826.             move.w    d2,d0
  2827.             move.w    d4,d2
  2828.  
  2829.             move.w    d3,d4
  2830.             move.w    d1,d3
  2831.             swap    d3
  2832.             move.w    d3,d1
  2833.             move.w    d4,d3
  2834.  
  2835.             move.l    #$00FF00FF,d5
  2836.  
  2837.             move.l    d1,d4
  2838.             lsr.l    #8,d4
  2839.             eor.l    d0,d4
  2840.             and.l    d5,d4
  2841.             eor.l    d4,d0
  2842.             lsl.l    #8,d4
  2843.             eor.l    d4,d1
  2844.  
  2845.             move.l    a5,(-4,a1,d7.l)
  2846.  
  2847.             move.l    d3,d4
  2848.             lsr.l    #8,d4
  2849.             eor.l    d2,d4
  2850.             and.l    d5,d4
  2851.             eor.l    d4,d2
  2852.             lsl.l    #8,d4
  2853.             eor.l    d4,d3
  2854.  
  2855.             move.l    #$33333333,d5
  2856.  
  2857.             and.l    d5,d0
  2858.             lsl.l    #2,d0
  2859.             and.l    d5,d2
  2860.             or.l    d0,d2
  2861.  
  2862.             move.l    a4,(-4,a1,d7.l*2)
  2863.  
  2864.             and.l    d5,d1
  2865.             lsl.l    #2,d1
  2866.             and.l    d5,d3
  2867.             or.l    d1,d3
  2868.  
  2869.             move.l    #$55555555,d5
  2870.  
  2871.             move.l    d3,d4
  2872.             lsr.l    #1,d4
  2873.             eor.l    d2,d4
  2874.             and.l    d5,d4
  2875.             eor.l    d4,d2
  2876.             lsl.l    #1,d4
  2877.             eor.l    d4,d3
  2878.  
  2879.             add.l    d7,a1
  2880.             move.l    a3,(-4,a1,d7.l*2)
  2881.             sub.l    d7,a1
  2882.  
  2883.             move.l    d2,a5
  2884.             move.l    d3,a6
  2885.  
  2886.             lea    ([C2P_PlanarBufferAddress,pc],d7.l*4),a1
  2887.  
  2888.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2889.  
  2890. .3            move.l    #$F0F0F0F0,d5
  2891.  
  2892.             move.l    (a0)+,d0
  2893.             and.l    d5,d0
  2894.             move.l    (a0)+,d1
  2895.             and.l    d5,d1
  2896.             lsr.l    #4,d1
  2897.             or.l    d1,d0
  2898.  
  2899.             move.l    (a0)+,d1
  2900.             and.l    d5,d1
  2901.             move.l    (a0)+,d2
  2902.             and.l    d5,d2
  2903.             lsr.l    #4,d2
  2904.             or.l    d2,d1
  2905.  
  2906.             move.l    (a0)+,d2
  2907.             and.l    d5,d2
  2908.             move.l    (a0)+,d3
  2909.             and.l    d5,d3
  2910.             lsr.l    #4,d3
  2911.             or.l    d3,d2
  2912.  
  2913.             move.l    (a0)+,d3
  2914.             and.l    d5,d3
  2915.             move.l    (a0)+,d4
  2916.             and.l    d5,d4
  2917.             lsr.l    #4,d4
  2918.             or.l    d4,d3
  2919.  
  2920.             move.l    a6,(a1)+
  2921.  
  2922.             move.w    d2,d4
  2923.             move.w    d0,d2
  2924.             swap    d2
  2925.             move.w    d2,d0
  2926.             move.w    d4,d2
  2927.  
  2928.             move.w    d3,d4
  2929.             move.w    d1,d3
  2930.             swap    d3
  2931.             move.w    d3,d1
  2932.             move.w    d4,d3
  2933.  
  2934.             move.l    #$00FF00FF,d5
  2935.  
  2936.             move.l    d1,d4
  2937.             lsr.l    #8,d4
  2938.             eor.l    d0,d4
  2939.             and.l    d5,d4
  2940.             eor.l    d4,d0
  2941.             lsl.l    #8,d4
  2942.             eor.l    d4,d1
  2943.  
  2944.             move.l    a5,(-4,a1,d7.l)
  2945.  
  2946.             move.l    d3,d4
  2947.             lsr.l    #8,d4
  2948.             eor.l    d2,d4
  2949.             and.l    d5,d4
  2950.             eor.l    d4,d2
  2951.             lsl.l    #8,d4
  2952.             eor.l    d4,d3
  2953.  
  2954.             move.l    #$33333333,d5
  2955.  
  2956.             and.l    d5,d0
  2957.             lsl.l    #2,d0
  2958.             and.l    d5,d2
  2959.             or.l    d0,d2
  2960.  
  2961.             and.l    d5,d1
  2962.             lsl.l    #2,d1
  2963.             and.l    d5,d3
  2964.             or.l    d1,d3
  2965.  
  2966.             move.l    #$55555555,d5
  2967.  
  2968.             move.l    d3,d4
  2969.             lsr.l    #1,d4
  2970.             eor.l    d2,d4
  2971.             and.l    d5,d4
  2972.             eor.l    d4,d2
  2973.             lsl.l    #1,d4
  2974.             eor.l    d4,d3
  2975.  
  2976.             move.l    d2,a5
  2977.             move.l    d3,a6
  2978.  
  2979.             sub.l    #1,d6
  2980.             bne    .4
  2981.  
  2982.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  2983.  
  2984.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*4),a1
  2985.             add.l    d7,a1
  2986.             add.l    d7,a1
  2987.  
  2988. .4            cmp.l    a2,a0
  2989.             bne    .3
  2990.  
  2991.             move.l    a6,(a1)
  2992.             move.l    a5,(a1,d7.l)
  2993.  
  2994.             movem.l    (sp)+,d2-d7/a2-a6
  2995.             rts
  2996.  
  2997. *-------------------------------------------------------------------------------
  2998.  
  2999. * IN: a0.l - Chunky Buffer Address
  3000. *     a1.l - Delta Buffer Address
  3001. *     a2.l - Planar Buffer Address
  3002. *     a3.l - Line Skip Buffer Address
  3003. *     d0.l - Bitplane Byte Width
  3004.  
  3005. d_6            movem.l    d2-d7/a2-a6,-(sp)
  3006.  
  3007.             move.l    a0,(C2P_ChunkyBufferAddress)
  3008.             move.l    a1,(C2P_DeltaBufferAddress)
  3009.             move.l    a2,(C2P_PlanarBufferAddress)
  3010.             move.l    a3,(C2P_LineSkipBufferAddress)
  3011.             move.l    d0,(C2P_BitplaneByteWidth)
  3012.  
  3013.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  3014.             move.l    a4,(C2P_ChunkyBufferEndAddress)
  3015.  
  3016.  
  3017.  
  3018.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  3019.             move.l    (C2P_DeltaBufferAddress,pc),a1
  3020.             move.l    (C2P_PlanarBufferAddress,pc),a2
  3021.             move.l    (C2P_LineSkipBufferAddress,pc),a3
  3022.  
  3023.             move.l    (C2P_BitplaneByteWidth,pc),d7
  3024.  
  3025. .12            tst.b    (a3)+
  3026.             beq    .14
  3027.  
  3028.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  3029.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  3030.  
  3031.             lea    (a2,d7.l*4),a2
  3032.             add.l    d7,a2
  3033.             add.l    d7,a2
  3034.  
  3035.             bra    .13
  3036.  
  3037. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  3038.  
  3039. .11            cmp.l    (a0)+,(a1)+
  3040.             bne    .1
  3041.             cmp.l    (a0)+,(a1)+
  3042.             bne    .2
  3043.             cmp.l    (a0)+,(a1)+
  3044.             bne    .3
  3045.             cmp.l    (a0)+,(a1)+
  3046.             bne    .4
  3047.             cmp.l    (a0)+,(a1)+
  3048.             bne    .5
  3049.             cmp.l    (a0)+,(a1)+
  3050.             bne    .6
  3051.             cmp.l    (a0)+,(a1)+
  3052.             bne    .7
  3053.             cmp.l    (a0)+,(a1)+
  3054.             bne    .8
  3055.  
  3056. .10            add.l    #4,a2
  3057.  
  3058.             sub.l    #1,d6
  3059.             bne    .11
  3060.  
  3061.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l*4),a2
  3062.             add.l    d7,a2
  3063.             add.l    d7,a2
  3064.  
  3065. .13            cmp.l    (C2P_ChunkyBufferEndAddress,pc),a0
  3066.             bne    .12
  3067.  
  3068.             movem.l    (sp)+,d2-d7/a2-a6
  3069.             rts
  3070.  
  3071. .1            sub.l    #1*4,a0
  3072.             add.l    #7*4,a1
  3073.             bra    .9
  3074.  
  3075. .2            sub.l    #2*4,a0
  3076.             add.l    #6*4,a1
  3077.             bra    .9
  3078.  
  3079. .3            sub.l    #3*4,a0
  3080.             add.l    #5*4,a1
  3081.             bra    .9
  3082.  
  3083. .4            sub.l    #4*4,a0
  3084.             add.l    #4*4,a1
  3085.             bra    .9
  3086.  
  3087. .5            sub.l    #5*4,a0
  3088.             add.l    #3*4,a1
  3089.             bra    .9
  3090.  
  3091. .6            sub.l    #6*4,a0
  3092.             add.l    #2*4,a1
  3093.             bra    .9
  3094.  
  3095. .7            sub.l    #7*4,a0
  3096.             add.l    #1*4,a1
  3097.             bra    .9
  3098.  
  3099. .8            sub.l    #8*4,a0
  3100.             add.l    #0*4,a1
  3101.             bra    .9
  3102.  
  3103. .9            move.l    #$0F0F0F0F,d5
  3104.  
  3105.             move.l    (a0)+,d0
  3106.             and.l    d5,d0
  3107.             lsl.l    #4,d0
  3108.             move.l    (a0)+,d1
  3109.             and.l    d5,d1
  3110.             or.l    d1,d0
  3111.  
  3112.             move.l    (a0)+,d1
  3113.             and.l    d5,d1
  3114.             lsl.l    #4,d1
  3115.             move.l    (a0)+,d2
  3116.             and.l    d5,d2
  3117.             or.l    d2,d1
  3118.  
  3119.             move.l    (a0)+,d2
  3120.             and.l    d5,d2
  3121.             lsl.l    #4,d2
  3122.             move.l    (a0)+,d3
  3123.             and.l    d5,d3
  3124.             or.l    d3,d2
  3125.  
  3126.             move.l    (a0)+,d3
  3127.             and.l    d5,d3
  3128.             lsl.l    #4,d3
  3129.             move.l    (a0)+,d4
  3130.             and.l    d5,d4
  3131.             or.l    d4,d3
  3132.  
  3133.             move.w    d2,d4
  3134.             move.w    d0,d2
  3135.             swap    d2
  3136.             move.w    d2,d0
  3137.             move.w    d4,d2
  3138.  
  3139.             move.w    d3,d4
  3140.             move.w    d1,d3
  3141.             swap    d3
  3142.             move.w    d3,d1
  3143.             move.w    d4,d3
  3144.  
  3145.             move.l    #$00FF00FF,d5
  3146.  
  3147.             move.l    d1,d4
  3148.             lsr.l    #8,d4
  3149.             eor.l    d0,d4
  3150.             and.l    d5,d4
  3151.             eor.l    d4,d0
  3152.             lsl.l    #8,d4
  3153.             eor.l    d4,d1
  3154.  
  3155.             move.l    d3,d4
  3156.             lsr.l    #8,d4
  3157.             eor.l    d2,d4
  3158.             and.l    d5,d4
  3159.             eor.l    d4,d2
  3160.             lsl.l    #8,d4
  3161.             eor.l    d4,d3
  3162.  
  3163.             move.l    #$33333333,d5
  3164.  
  3165.             move.l    d2,d4
  3166.             lsr.l    #2,d4
  3167.             eor.l    d0,d4
  3168.             and.l    d5,d4
  3169.             eor.l    d4,d0
  3170.             lsl.l    #2,d4
  3171.             eor.l    d4,d2
  3172.  
  3173.             move.l    d3,d4
  3174.             lsr.l    #2,d4
  3175.             eor.l    d1,d4
  3176.             and.l    d5,d4
  3177.             eor.l    d4,d1
  3178.             lsl.l    #2,d4
  3179.             eor.l    d4,d3
  3180.  
  3181.             move.l    #$55555555,d5
  3182.  
  3183.             move.l    d1,d4
  3184.             lsr.l    #1,d4
  3185.             eor.l    d0,d4
  3186.             and.l    d5,d4
  3187.             eor.l    d4,d0
  3188.             lsl.l    #1,d4
  3189.             eor.l    d4,d1
  3190.  
  3191.             move.l    d1,(a2,d7.l*2)
  3192.  
  3193.             move.l    d3,d4
  3194.             lsr.l    #1,d4
  3195.             eor.l    d2,d4
  3196.             and.l    d5,d4
  3197.             eor.l    d4,d2
  3198.             lsl.l    #1,d4
  3199.             eor.l    d4,d3
  3200.  
  3201.             move.l    d0,a4
  3202.             move.l    d2,a5
  3203.             move.l    d3,a6
  3204.  
  3205.             sub.l    #8*4,a0
  3206.  
  3207.             move.l    #$F0F0F0F0,d5
  3208.  
  3209.             move.l    (a0)+,d0
  3210.             and.l    d5,d0
  3211.             move.l    (a0)+,d1
  3212.             and.l    d5,d1
  3213.             lsr.l    #4,d1
  3214.             or.l    d1,d0
  3215.  
  3216.             move.l    (a0)+,d1
  3217.             and.l    d5,d1
  3218.             move.l    (a0)+,d2
  3219.             and.l    d5,d2
  3220.             lsr.l    #4,d2
  3221.             or.l    d2,d1
  3222.  
  3223.             move.l    (a0)+,d2
  3224.             and.l    d5,d2
  3225.             move.l    (a0)+,d3
  3226.             and.l    d5,d3
  3227.             lsr.l    #4,d3
  3228.             or.l    d3,d2
  3229.  
  3230.             move.l    (a0)+,d3
  3231.             and.l    d5,d3
  3232.             move.l    (a0)+,d4
  3233.             and.l    d5,d4
  3234.             lsr.l    #4,d4
  3235.             or.l    d4,d3
  3236.  
  3237.             move.l    a6,(a2)
  3238.  
  3239.             move.w    d2,d4
  3240.             move.w    d0,d2
  3241.             swap    d2
  3242.             move.w    d2,d0
  3243.             move.w    d4,d2
  3244.  
  3245.             move.w    d3,d4
  3246.             move.w    d1,d3
  3247.             swap    d3
  3248.             move.w    d3,d1
  3249.             move.w    d4,d3
  3250.  
  3251.             move.l    #$00FF00FF,d5
  3252.  
  3253.             move.l    d1,d4
  3254.             lsr.l    #8,d4
  3255.             eor.l    d0,d4
  3256.             and.l    d5,d4
  3257.             eor.l    d4,d0
  3258.             lsl.l    #8,d4
  3259.             eor.l    d4,d1
  3260.  
  3261.             move.l    a5,(a2,d7.l)
  3262.  
  3263.             move.l    d3,d4
  3264.             lsr.l    #8,d4
  3265.             eor.l    d2,d4
  3266.             and.l    d5,d4
  3267.             eor.l    d4,d2
  3268.             lsl.l    #8,d4
  3269.             eor.l    d4,d3
  3270.  
  3271.             move.l    #$33333333,d5
  3272.  
  3273.             and.l    d5,d0
  3274.             lsl.l    #2,d0
  3275.             and.l    d5,d2
  3276.             or.l    d0,d2
  3277.  
  3278.             add.l    d7,a2
  3279.             move.l    a4,(a2,d7.l*2)
  3280.             sub.l    d7,a2
  3281.  
  3282.             and.l    d5,d1
  3283.             lsl.l    #2,d1
  3284.             and.l    d5,d3
  3285.             or.l    d1,d3
  3286.  
  3287.             move.l    #$55555555,d5
  3288.  
  3289.             move.l    d3,d4
  3290.             lsr.l    #1,d4
  3291.             eor.l    d2,d4
  3292.             and.l    d5,d4
  3293.             eor.l    d4,d2
  3294.  
  3295.             lea    (a2,d7.l*4),a2
  3296.             move.l    d2,(a2,d7.l)
  3297.  
  3298.             lsl.l    #1,d4
  3299.             eor.l    d4,d3
  3300.  
  3301.             move.l    d3,(a2)
  3302.  
  3303.             sub.l    d7,a2
  3304.             sub.l    d7,a2
  3305.             sub.l    d7,a2
  3306.             sub.l    d7,a2
  3307.  
  3308.             bra    .10
  3309.  
  3310. *-------------------------------------------------------------------------------
  3311.  
  3312. *-------------------------------------------------------------------------------
  3313.  
  3314. * IN: a0.l - Chunky Buffer Address
  3315. *     a1.l - Planar Buffer Address
  3316. *     d0.l - Bitplane Byte Width
  3317.  
  3318. f_7            movem.l    d2-d7/a2-a6,-(sp)
  3319.  
  3320.             move.l    a0,(C2P_ChunkyBufferAddress)
  3321.             move.l    a1,(C2P_PlanarBufferAddress)
  3322.             move.l    d0,(C2P_BitplaneByteWidth)
  3323.  
  3324.  
  3325.  
  3326.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  3327.             move.l    (C2P_PlanarBufferAddress,pc),a1
  3328.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  3329.  
  3330.             move.l    (C2P_BitplaneByteWidth,pc),d7
  3331.  
  3332.             move.l    #$0F0F0F0F,d5
  3333.  
  3334.             move.l    (a0)+,d0
  3335.             and.l    d5,d0
  3336.             lsl.l    #4,d0
  3337.             move.l    (a0)+,d1
  3338.             and.l    d5,d1
  3339.             or.l    d1,d0
  3340.  
  3341.             move.l    (a0)+,d1
  3342.             and.l    d5,d1
  3343.             lsl.l    #4,d1
  3344.             move.l    (a0)+,d2
  3345.             and.l    d5,d2
  3346.             or.l    d2,d1
  3347.  
  3348.             move.l    (a0)+,d2
  3349.             and.l    d5,d2
  3350.             lsl.l    #4,d2
  3351.             move.l    (a0)+,d3
  3352.             and.l    d5,d3
  3353.             or.l    d3,d2
  3354.  
  3355.             move.l    (a0)+,d3
  3356.             and.l    d5,d3
  3357.             lsl.l    #4,d3
  3358.             move.l    (a0)+,d4
  3359.             and.l    d5,d4
  3360.             or.l    d4,d3
  3361.  
  3362.             move.w    d2,d4
  3363.             move.w    d0,d2
  3364.             swap    d2
  3365.             move.w    d2,d0
  3366.             move.w    d4,d2
  3367.  
  3368.             move.w    d3,d4
  3369.             move.w    d1,d3
  3370.             swap    d3
  3371.             move.w    d3,d1
  3372.             move.w    d4,d3
  3373.  
  3374.             move.l    #$00FF00FF,d5
  3375.  
  3376.             move.l    d1,d4
  3377.             lsr.l    #8,d4
  3378.             eor.l    d0,d4
  3379.             and.l    d5,d4
  3380.             eor.l    d4,d0
  3381.             lsl.l    #8,d4
  3382.             eor.l    d4,d1
  3383.  
  3384.             move.l    d3,d4
  3385.             lsr.l    #8,d4
  3386.             eor.l    d2,d4
  3387.             and.l    d5,d4
  3388.             eor.l    d4,d2
  3389.             lsl.l    #8,d4
  3390.             eor.l    d4,d3
  3391.  
  3392.             move.l    #$33333333,d5
  3393.  
  3394.             move.l    d2,d4
  3395.             lsr.l    #2,d4
  3396.             eor.l    d0,d4
  3397.             and.l    d5,d4
  3398.             eor.l    d4,d0
  3399.             lsl.l    #2,d4
  3400.             eor.l    d4,d2
  3401.  
  3402.             move.l    d3,d4
  3403.             lsr.l    #2,d4
  3404.             eor.l    d1,d4
  3405.             and.l    d5,d4
  3406.             eor.l    d4,d1
  3407.             lsl.l    #2,d4
  3408.             eor.l    d4,d3
  3409.  
  3410.             move.l    #$55555555,d5
  3411.  
  3412.             move.l    d1,d4
  3413.             lsr.l    #1,d4
  3414.             eor.l    d0,d4
  3415.             and.l    d5,d4
  3416.             eor.l    d4,d0
  3417.             lsl.l    #1,d4
  3418.             eor.l    d4,d1
  3419.  
  3420.             move.l    d3,d4
  3421.             lsr.l    #1,d4
  3422.             eor.l    d2,d4
  3423.             and.l    d5,d4
  3424.             eor.l    d4,d2
  3425.             lsl.l    #1,d4
  3426.             eor.l    d4,d3
  3427.  
  3428.             move.l    d0,a3
  3429.             move.l    d1,a4
  3430.             move.l    d2,a5
  3431.             move.l    d3,a6
  3432.  
  3433.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  3434.  
  3435. .1            move.l    #$0F0F0F0F,d5
  3436.  
  3437.             move.l    (a0)+,d0
  3438.             and.l    d5,d0
  3439.             lsl.l    #4,d0
  3440.             move.l    (a0)+,d1
  3441.             and.l    d5,d1
  3442.             or.l    d1,d0
  3443.  
  3444.             move.l    (a0)+,d1
  3445.             and.l    d5,d1
  3446.             lsl.l    #4,d1
  3447.             move.l    (a0)+,d2
  3448.             and.l    d5,d2
  3449.             or.l    d2,d1
  3450.  
  3451.             move.l    (a0)+,d2
  3452.             and.l    d5,d2
  3453.             lsl.l    #4,d2
  3454.             move.l    (a0)+,d3
  3455.             and.l    d5,d3
  3456.             or.l    d3,d2
  3457.  
  3458.             move.l    (a0)+,d3
  3459.             and.l    d5,d3
  3460.             lsl.l    #4,d3
  3461.             move.l    (a0)+,d4
  3462.             and.l    d5,d4
  3463.             or.l    d4,d3
  3464.  
  3465.             move.l    a6,(a1)+
  3466.  
  3467.             move.w    d2,d4
  3468.             move.w    d0,d2
  3469.             swap    d2
  3470.             move.w    d2,d0
  3471.             move.w    d4,d2
  3472.  
  3473.             move.w    d3,d4
  3474.             move.w    d1,d3
  3475.             swap    d3
  3476.             move.w    d3,d1
  3477.             move.w    d4,d3
  3478.  
  3479.             move.l    #$00FF00FF,d5
  3480.  
  3481.             move.l    d1,d4
  3482.             lsr.l    #8,d4
  3483.             eor.l    d0,d4
  3484.             and.l    d5,d4
  3485.             eor.l    d4,d0
  3486.             lsl.l    #8,d4
  3487.             eor.l    d4,d1
  3488.  
  3489.             move.l    a5,(-4,a1,d7.l)
  3490.  
  3491.             move.l    d3,d4
  3492.             lsr.l    #8,d4
  3493.             eor.l    d2,d4
  3494.             and.l    d5,d4
  3495.             eor.l    d4,d2
  3496.             lsl.l    #8,d4
  3497.             eor.l    d4,d3
  3498.  
  3499.             move.l    #$33333333,d5
  3500.  
  3501.             move.l    d2,d4
  3502.             lsr.l    #2,d4
  3503.             eor.l    d0,d4
  3504.             and.l    d5,d4
  3505.             eor.l    d4,d0
  3506.             lsl.l    #2,d4
  3507.             eor.l    d4,d2
  3508.  
  3509.             move.l    a4,(-4,a1,d7.l*2)
  3510.  
  3511.             move.l    d3,d4
  3512.             lsr.l    #2,d4
  3513.             eor.l    d1,d4
  3514.             and.l    d5,d4
  3515.             eor.l    d4,d1
  3516.             lsl.l    #2,d4
  3517.             eor.l    d4,d3
  3518.  
  3519.             move.l    #$55555555,d5
  3520.  
  3521.             move.l    d1,d4
  3522.             lsr.l    #1,d4
  3523.             eor.l    d0,d4
  3524.             and.l    d5,d4
  3525.             eor.l    d4,d0
  3526.             lsl.l    #1,d4
  3527.             eor.l    d4,d1
  3528.  
  3529.             add.l    d7,a1
  3530.             move.l    a3,(-4,a1,d7.l*2)
  3531.             sub.l    d7,a1
  3532.  
  3533.             move.l    d3,d4
  3534.             lsr.l    #1,d4
  3535.             eor.l    d2,d4
  3536.             and.l    d5,d4
  3537.             eor.l    d4,d2
  3538.             lsl.l    #1,d4
  3539.             eor.l    d4,d3
  3540.  
  3541.             move.l    d0,a3
  3542.             move.l    d1,a4
  3543.             move.l    d2,a5
  3544.             move.l    d3,a6
  3545.  
  3546.             sub.l    #1,d6
  3547.             bne    .2
  3548.  
  3549.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  3550.  
  3551.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*8),a1
  3552.             sub.l    d7,a1
  3553.  
  3554. .2            cmp.l    a2,a0
  3555.             bne    .1
  3556.  
  3557.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  3558.  
  3559.             move.l    #$F0F0F0F0,d5
  3560.  
  3561.             move.l    (a0)+,d0
  3562.             and.l    d5,d0
  3563.             move.l    (a0)+,d1
  3564.             and.l    d5,d1
  3565.             lsr.l    #4,d1
  3566.             or.l    d1,d0
  3567.  
  3568.             move.l    (a0)+,d1
  3569.             and.l    d5,d1
  3570.             move.l    (a0)+,d2
  3571.             and.l    d5,d2
  3572.             lsr.l    #4,d2
  3573.             or.l    d2,d1
  3574.  
  3575.             move.l    (a0)+,d2
  3576.             and.l    d5,d2
  3577.             move.l    (a0)+,d3
  3578.             and.l    d5,d3
  3579.             lsr.l    #4,d3
  3580.             or.l    d3,d2
  3581.  
  3582.             move.l    (a0)+,d3
  3583.             and.l    d5,d3
  3584.             move.l    (a0)+,d4
  3585.             and.l    d5,d4
  3586.             lsr.l    #4,d4
  3587.             or.l    d4,d3
  3588.  
  3589.             move.l    a6,(a1)+
  3590.  
  3591.             move.w    d2,d4
  3592.             move.w    d0,d2
  3593.             swap    d2
  3594.             move.w    d2,d0
  3595.             move.w    d4,d2
  3596.  
  3597.             move.w    d3,d4
  3598.             move.w    d1,d3
  3599.             swap    d3
  3600.             move.w    d3,d1
  3601.             move.w    d4,d3
  3602.  
  3603.             move.l    #$00FF00FF,d5
  3604.  
  3605.             move.l    d1,d4
  3606.             lsr.l    #8,d4
  3607.             eor.l    d0,d4
  3608.             and.l    d5,d4
  3609.             eor.l    d4,d0
  3610.             lsl.l    #8,d4
  3611.             eor.l    d4,d1
  3612.  
  3613.             move.l    a5,(-4,a1,d7.l)
  3614.  
  3615.             move.l    d3,d4
  3616.             lsr.l    #8,d4
  3617.             eor.l    d2,d4
  3618.             and.l    d5,d4
  3619.             eor.l    d4,d2
  3620.             lsl.l    #8,d4
  3621.             eor.l    d4,d3
  3622.  
  3623.             move.l    #$33333333,d5
  3624.  
  3625.             move.l    d2,d4
  3626.             lsr.l    #2,d4
  3627.             eor.l    d0,d4
  3628.             and.l    d5,d4
  3629.             eor.l    d4,d0
  3630.             lsl.l    #2,d4
  3631.             eor.l    d4,d2
  3632.  
  3633.             move.l    a4,(-4,a1,d7.l*2)
  3634.  
  3635.             move.l    d3,d4
  3636.             lsr.l    #2,d4
  3637.             eor.l    d1,d4
  3638.             and.l    d5,d4
  3639.             eor.l    d4,d1
  3640.             lsl.l    #2,d4
  3641.             eor.l    d4,d3
  3642.  
  3643.             move.l    #$55555555,d5
  3644.  
  3645.             and.l    d5,d0
  3646.             lsl.l    #1,d0
  3647.             and.l    d5,d1
  3648.             or.l    d0,d1
  3649.  
  3650.             add.l    d7,a1
  3651.             move.l    a3,(-4,a1,d7.l*2)
  3652.             sub.l    d7,a1
  3653.  
  3654.             move.l    d3,d4
  3655.             lsr.l    #1,d4
  3656.             eor.l    d2,d4
  3657.             and.l    d5,d4
  3658.             eor.l    d4,d2
  3659.             lsl.l    #1,d4
  3660.             eor.l    d4,d3
  3661.  
  3662.             move.l    d1,a4
  3663.             move.l    d2,a5
  3664.             move.l    d3,a6
  3665.  
  3666.             lea    ([C2P_PlanarBufferAddress,pc],d7.l*4),a1
  3667.  
  3668.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  3669.  
  3670. .3            move.l    #$F0F0F0F0,d5
  3671.  
  3672.             move.l    (a0)+,d0
  3673.             and.l    d5,d0
  3674.             move.l    (a0)+,d1
  3675.             and.l    d5,d1
  3676.             lsr.l    #4,d1
  3677.             or.l    d1,d0
  3678.  
  3679.             move.l    (a0)+,d1
  3680.             and.l    d5,d1
  3681.             move.l    (a0)+,d2
  3682.             and.l    d5,d2
  3683.             lsr.l    #4,d2
  3684.             or.l    d2,d1
  3685.  
  3686.             move.l    (a0)+,d2
  3687.             and.l    d5,d2
  3688.             move.l    (a0)+,d3
  3689.             and.l    d5,d3
  3690.             lsr.l    #4,d3
  3691.             or.l    d3,d2
  3692.  
  3693.             move.l    (a0)+,d3
  3694.             and.l    d5,d3
  3695.             move.l    (a0)+,d4
  3696.             and.l    d5,d4
  3697.             lsr.l    #4,d4
  3698.             or.l    d4,d3
  3699.  
  3700.             move.l    a6,(a1)+
  3701.  
  3702.             move.w    d2,d4
  3703.             move.w    d0,d2
  3704.             swap    d2
  3705.             move.w    d2,d0
  3706.             move.w    d4,d2
  3707.  
  3708.             move.w    d3,d4
  3709.             move.w    d1,d3
  3710.             swap    d3
  3711.             move.w    d3,d1
  3712.             move.w    d4,d3
  3713.  
  3714.             move.l    #$00FF00FF,d5
  3715.  
  3716.             move.l    d1,d4
  3717.             lsr.l    #8,d4
  3718.             eor.l    d0,d4
  3719.             and.l    d5,d4
  3720.             eor.l    d4,d0
  3721.             lsl.l    #8,d4
  3722.             eor.l    d4,d1
  3723.  
  3724.             move.l    a5,(-4,a1,d7.l)
  3725.  
  3726.             move.l    d3,d4
  3727.             lsr.l    #8,d4
  3728.             eor.l    d2,d4
  3729.             and.l    d5,d4
  3730.             eor.l    d4,d2
  3731.             lsl.l    #8,d4
  3732.             eor.l    d4,d3
  3733.  
  3734.             move.l    #$33333333,d5
  3735.  
  3736.             move.l    d2,d4
  3737.             lsr.l    #2,d4
  3738.             eor.l    d0,d4
  3739.             and.l    d5,d4
  3740.             eor.l    d4,d0
  3741.             lsl.l    #2,d4
  3742.             eor.l    d4,d2
  3743.  
  3744.             move.l    a4,(-4,a1,d7.l*2)
  3745.  
  3746.             move.l    d3,d4
  3747.             lsr.l    #2,d4
  3748.             eor.l    d1,d4
  3749.             and.l    d5,d4
  3750.             eor.l    d4,d1
  3751.             lsl.l    #2,d4
  3752.             eor.l    d4,d3
  3753.  
  3754.             move.l    #$55555555,d5
  3755.  
  3756.             and.l    d5,d0
  3757.             lsl.l    #1,d0
  3758.             and.l    d5,d1
  3759.             or.l    d0,d1
  3760.  
  3761.             move.l    d3,d4
  3762.             lsr.l    #1,d4
  3763.             eor.l    d2,d4
  3764.             and.l    d5,d4
  3765.             eor.l    d4,d2
  3766.             lsl.l    #1,d4
  3767.             eor.l    d4,d3
  3768.  
  3769.             move.l    d1,a4
  3770.             move.l    d2,a5
  3771.             move.l    d3,a6
  3772.  
  3773.             sub.l    #1,d6
  3774.             bne    .4
  3775.  
  3776.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  3777.  
  3778.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*8),a1
  3779.             sub.l    d7,a1
  3780.  
  3781. .4            cmp.l    a2,a0
  3782.             bne    .3
  3783.  
  3784.             move.l    a6,(a1)
  3785.             move.l    a5,(a1,d7.l)
  3786.             move.l    a4,(a1,d7.l*2)
  3787.  
  3788.             movem.l    (sp)+,d2-d7/a2-a6
  3789.             rts
  3790.  
  3791. *-------------------------------------------------------------------------------
  3792.  
  3793. * IN: a0.l - Chunky Buffer Address
  3794. *     a1.l - Delta Buffer Address
  3795. *     a2.l - Planar Buffer Address
  3796. *     a3.l - Line Skip Buffer Address
  3797. *     d0.l - Bitplane Byte Width
  3798.  
  3799. d_7            movem.l    d2-d7/a2-a6,-(sp)
  3800.  
  3801.             move.l    a0,(C2P_ChunkyBufferAddress)
  3802.             move.l    a1,(C2P_DeltaBufferAddress)
  3803.             move.l    a2,(C2P_PlanarBufferAddress)
  3804.             move.l    a3,(C2P_LineSkipBufferAddress)
  3805.             move.l    d0,(C2P_BitplaneByteWidth)
  3806.  
  3807.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  3808.             move.l    a4,(C2P_ChunkyBufferEndAddress)
  3809.  
  3810.  
  3811.  
  3812.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  3813.             move.l    (C2P_DeltaBufferAddress,pc),a1
  3814.             move.l    (C2P_PlanarBufferAddress,pc),a2
  3815.             move.l    (C2P_LineSkipBufferAddress,pc),a3
  3816.  
  3817.             move.l    (C2P_BitplaneByteWidth,pc),d7
  3818.  
  3819. .12            tst.b    (a3)+
  3820.             beq    .14
  3821.  
  3822.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  3823.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  3824.  
  3825.             lea    (a2,d7.l*8),a2
  3826.             sub.l    d7,a2
  3827.  
  3828.             bra    .13
  3829.  
  3830. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  3831.  
  3832. .11            cmp.l    (a0)+,(a1)+
  3833.             bne    .1
  3834.             cmp.l    (a0)+,(a1)+
  3835.             bne    .2
  3836.             cmp.l    (a0)+,(a1)+
  3837.             bne    .3
  3838.             cmp.l    (a0)+,(a1)+
  3839.             bne    .4
  3840.             cmp.l    (a0)+,(a1)+
  3841.             bne    .5
  3842.             cmp.l    (a0)+,(a1)+
  3843.             bne    .6
  3844.             cmp.l    (a0)+,(a1)+
  3845.             bne    .7
  3846.             cmp.l    (a0)+,(a1)+
  3847.             bne    .8
  3848.  
  3849. .10            add.l    #4,a2
  3850.  
  3851.             sub.l    #1,d6
  3852.             bne    .11
  3853.  
  3854.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l*8),a2
  3855.             sub.l    d7,a2
  3856.  
  3857. .13            cmp.l    (C2P_ChunkyBufferEndAddress,pc),a0
  3858.             bne    .12
  3859.  
  3860.             movem.l    (sp)+,d2-d7/a2-a6
  3861.             rts
  3862.  
  3863. .1            sub.l    #1*4,a0
  3864.             add.l    #7*4,a1
  3865.             bra    .9
  3866.  
  3867. .2            sub.l    #2*4,a0
  3868.             add.l    #6*4,a1
  3869.             bra    .9
  3870.  
  3871. .3            sub.l    #3*4,a0
  3872.             add.l    #5*4,a1
  3873.             bra    .9
  3874.  
  3875. .4            sub.l    #4*4,a0
  3876.             add.l    #4*4,a1
  3877.             bra    .9
  3878.  
  3879. .5            sub.l    #5*4,a0
  3880.             add.l    #3*4,a1
  3881.             bra    .9
  3882.  
  3883. .6            sub.l    #6*4,a0
  3884.             add.l    #2*4,a1
  3885.             bra    .9
  3886.  
  3887. .7            sub.l    #7*4,a0
  3888.             add.l    #1*4,a1
  3889.             bra    .9
  3890.  
  3891. .8            sub.l    #8*4,a0
  3892.             add.l    #0*4,a1
  3893.             bra    .9
  3894.  
  3895. .9            move.l    #$0F0F0F0F,d5
  3896.  
  3897.             move.l    (a0)+,d0
  3898.             and.l    d5,d0
  3899.             lsl.l    #4,d0
  3900.             move.l    (a0)+,d1
  3901.             and.l    d5,d1
  3902.             or.l    d1,d0
  3903.  
  3904.             move.l    (a0)+,d1
  3905.             and.l    d5,d1
  3906.             lsl.l    #4,d1
  3907.             move.l    (a0)+,d2
  3908.             and.l    d5,d2
  3909.             or.l    d2,d1
  3910.  
  3911.             move.l    (a0)+,d2
  3912.             and.l    d5,d2
  3913.             lsl.l    #4,d2
  3914.             move.l    (a0)+,d3
  3915.             and.l    d5,d3
  3916.             or.l    d3,d2
  3917.  
  3918.             move.l    (a0)+,d3
  3919.             and.l    d5,d3
  3920.             lsl.l    #4,d3
  3921.             move.l    (a0)+,d4
  3922.             and.l    d5,d4
  3923.             or.l    d4,d3
  3924.  
  3925.             move.w    d2,d4
  3926.             move.w    d0,d2
  3927.             swap    d2
  3928.             move.w    d2,d0
  3929.             move.w    d4,d2
  3930.  
  3931.             move.w    d3,d4
  3932.             move.w    d1,d3
  3933.             swap    d3
  3934.             move.w    d3,d1
  3935.             move.w    d4,d3
  3936.  
  3937.             move.l    #$00FF00FF,d5
  3938.  
  3939.             move.l    d1,d4
  3940.             lsr.l    #8,d4
  3941.             eor.l    d0,d4
  3942.             and.l    d5,d4
  3943.             eor.l    d4,d0
  3944.             lsl.l    #8,d4
  3945.             eor.l    d4,d1
  3946.  
  3947.             move.l    d3,d4
  3948.             lsr.l    #8,d4
  3949.             eor.l    d2,d4
  3950.             and.l    d5,d4
  3951.             eor.l    d4,d2
  3952.             lsl.l    #8,d4
  3953.             eor.l    d4,d3
  3954.  
  3955.             move.l    #$33333333,d5
  3956.  
  3957.             move.l    d2,d4
  3958.             lsr.l    #2,d4
  3959.             eor.l    d0,d4
  3960.             and.l    d5,d4
  3961.             eor.l    d4,d0
  3962.             lsl.l    #2,d4
  3963.             eor.l    d4,d2
  3964.  
  3965.             move.l    d3,d4
  3966.             lsr.l    #2,d4
  3967.             eor.l    d1,d4
  3968.             and.l    d5,d4
  3969.             eor.l    d4,d1
  3970.             lsl.l    #2,d4
  3971.             eor.l    d4,d3
  3972.  
  3973.             move.l    #$55555555,d5
  3974.  
  3975.             move.l    d1,d4
  3976.             lsr.l    #1,d4
  3977.             eor.l    d0,d4
  3978.             and.l    d5,d4
  3979.             eor.l    d4,d0
  3980.             lsl.l    #1,d4
  3981.             eor.l    d4,d1
  3982.  
  3983.             move.l    d1,(a2,d7.l*2)
  3984.  
  3985.             move.l    d3,d4
  3986.             lsr.l    #1,d4
  3987.             eor.l    d2,d4
  3988.             and.l    d5,d4
  3989.             eor.l    d4,d2
  3990.             lsl.l    #1,d4
  3991.             eor.l    d4,d3
  3992.  
  3993.             move.l    d0,a4
  3994.             move.l    d2,a5
  3995.             move.l    d3,a6
  3996.  
  3997.             sub.l    #8*4,a0
  3998.  
  3999.             move.l    #$F0F0F0F0,d5
  4000.  
  4001.             move.l    (a0)+,d0
  4002.             and.l    d5,d0
  4003.             move.l    (a0)+,d1
  4004.             and.l    d5,d1
  4005.             lsr.l    #4,d1
  4006.             or.l    d1,d0
  4007.  
  4008.             move.l    (a0)+,d1
  4009.             and.l    d5,d1
  4010.             move.l    (a0)+,d2
  4011.             and.l    d5,d2
  4012.             lsr.l    #4,d2
  4013.             or.l    d2,d1
  4014.  
  4015.             move.l    (a0)+,d2
  4016.             and.l    d5,d2
  4017.             move.l    (a0)+,d3
  4018.             and.l    d5,d3
  4019.             lsr.l    #4,d3
  4020.             or.l    d3,d2
  4021.  
  4022.             move.l    (a0)+,d3
  4023.             and.l    d5,d3
  4024.             move.l    (a0)+,d4
  4025.             and.l    d5,d4
  4026.             lsr.l    #4,d4
  4027.             or.l    d4,d3
  4028.  
  4029.             move.l    a6,(a2)
  4030.  
  4031.             move.w    d2,d4
  4032.             move.w    d0,d2
  4033.             swap    d2
  4034.             move.w    d2,d0
  4035.             move.w    d4,d2
  4036.  
  4037.             move.w    d3,d4
  4038.             move.w    d1,d3
  4039.             swap    d3
  4040.             move.w    d3,d1
  4041.             move.w    d4,d3
  4042.  
  4043.             move.l    #$00FF00FF,d5
  4044.  
  4045.             move.l    d1,d4
  4046.             lsr.l    #8,d4
  4047.             eor.l    d0,d4
  4048.             and.l    d5,d4
  4049.             eor.l    d4,d0
  4050.             lsl.l    #8,d4
  4051.             eor.l    d4,d1
  4052.  
  4053.             move.l    a5,(a2,d7.l)
  4054.  
  4055.             move.l    d3,d4
  4056.             lsr.l    #8,d4
  4057.             eor.l    d2,d4
  4058.             and.l    d5,d4
  4059.             eor.l    d4,d2
  4060.             lsl.l    #8,d4
  4061.             eor.l    d4,d3
  4062.  
  4063.             move.l    #$33333333,d5
  4064.  
  4065.             move.l    d2,d4
  4066.             lsr.l    #2,d4
  4067.             eor.l    d0,d4
  4068.             and.l    d5,d4
  4069.             eor.l    d4,d0
  4070.             lsl.l    #2,d4
  4071.             eor.l    d4,d2
  4072.  
  4073.             add.l    d7,a2
  4074.             move.l    a4,(a2,d7.l*2)
  4075.             sub.l    d7,a2
  4076.  
  4077.             move.l    d3,d4
  4078.             lsr.l    #2,d4
  4079.             eor.l    d1,d4
  4080.             and.l    d5,d4
  4081.             eor.l    d4,d1
  4082.             lsl.l    #2,d4
  4083.             eor.l    d4,d3
  4084.  
  4085.             move.l    #$55555555,d5
  4086.  
  4087.             and.l    d5,d0
  4088.             lsl.l    #1,d0
  4089.             and.l    d5,d1
  4090.             or.l    d0,d1
  4091.  
  4092.             lea    (a2,d7.l*4),a2
  4093.             move.l    d1,(a2,d7.l*2)
  4094.  
  4095.             move.l    d3,d4
  4096.             lsr.l    #1,d4
  4097.             eor.l    d2,d4
  4098.             and.l    d5,d4
  4099.             eor.l    d4,d2
  4100.  
  4101.             move.l    d2,(a2,d7.l)
  4102.  
  4103.             lsl.l    #1,d4
  4104.             eor.l    d4,d3
  4105.  
  4106.             move.l    d3,(a2)
  4107.  
  4108.             sub.l    d7,a2
  4109.             sub.l    d7,a2
  4110.             sub.l    d7,a2
  4111.             sub.l    d7,a2
  4112.  
  4113.             bra    .10
  4114.  
  4115. *-------------------------------------------------------------------------------
  4116.  
  4117. *-------------------------------------------------------------------------------
  4118.  
  4119. * IN: a0.l - Chunky Buffer Address
  4120. *     a1.l - Planar Buffer Address
  4121. *     d0.l - Bitplane Byte Width
  4122.  
  4123. f_8            movem.l    d2-d7/a2-a6,-(sp)
  4124.  
  4125.             move.l    a0,(C2P_ChunkyBufferAddress)
  4126.             move.l    a1,(C2P_PlanarBufferAddress)
  4127.             move.l    d0,(C2P_BitplaneByteWidth)
  4128.  
  4129.  
  4130.  
  4131.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  4132.             move.l    (C2P_PlanarBufferAddress,pc),a1
  4133.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a2
  4134.  
  4135.             move.l    (C2P_BitplaneByteWidth,pc),d7
  4136.  
  4137.             move.l    #$0F0F0F0F,d5
  4138.  
  4139.             move.l    (a0)+,d0
  4140.             and.l    d5,d0
  4141.             lsl.l    #4,d0
  4142.             move.l    (a0)+,d1
  4143.             and.l    d5,d1
  4144.             or.l    d1,d0
  4145.  
  4146.             move.l    (a0)+,d1
  4147.             and.l    d5,d1
  4148.             lsl.l    #4,d1
  4149.             move.l    (a0)+,d2
  4150.             and.l    d5,d2
  4151.             or.l    d2,d1
  4152.  
  4153.             move.l    (a0)+,d2
  4154.             and.l    d5,d2
  4155.             lsl.l    #4,d2
  4156.             move.l    (a0)+,d3
  4157.             and.l    d5,d3
  4158.             or.l    d3,d2
  4159.  
  4160.             move.l    (a0)+,d3
  4161.             and.l    d5,d3
  4162.             lsl.l    #4,d3
  4163.             move.l    (a0)+,d4
  4164.             and.l    d5,d4
  4165.             or.l    d4,d3
  4166.  
  4167.             move.w    d2,d4
  4168.             move.w    d0,d2
  4169.             swap    d2
  4170.             move.w    d2,d0
  4171.             move.w    d4,d2
  4172.  
  4173.             move.w    d3,d4
  4174.             move.w    d1,d3
  4175.             swap    d3
  4176.             move.w    d3,d1
  4177.             move.w    d4,d3
  4178.  
  4179.             move.l    #$00FF00FF,d5
  4180.  
  4181.             move.l    d1,d4
  4182.             lsr.l    #8,d4
  4183.             eor.l    d0,d4
  4184.             and.l    d5,d4
  4185.             eor.l    d4,d0
  4186.             lsl.l    #8,d4
  4187.             eor.l    d4,d1
  4188.  
  4189.             move.l    d3,d4
  4190.             lsr.l    #8,d4
  4191.             eor.l    d2,d4
  4192.             and.l    d5,d4
  4193.             eor.l    d4,d2
  4194.             lsl.l    #8,d4
  4195.             eor.l    d4,d3
  4196.  
  4197.             move.l    #$33333333,d5
  4198.  
  4199.             move.l    d2,d4
  4200.             lsr.l    #2,d4
  4201.             eor.l    d0,d4
  4202.             and.l    d5,d4
  4203.             eor.l    d4,d0
  4204.             lsl.l    #2,d4
  4205.             eor.l    d4,d2
  4206.  
  4207.             move.l    d3,d4
  4208.             lsr.l    #2,d4
  4209.             eor.l    d1,d4
  4210.             and.l    d5,d4
  4211.             eor.l    d4,d1
  4212.             lsl.l    #2,d4
  4213.             eor.l    d4,d3
  4214.  
  4215.             move.l    #$55555555,d5
  4216.  
  4217.             move.l    d1,d4
  4218.             lsr.l    #1,d4
  4219.             eor.l    d0,d4
  4220.             and.l    d5,d4
  4221.             eor.l    d4,d0
  4222.             lsl.l    #1,d4
  4223.             eor.l    d4,d1
  4224.  
  4225.             move.l    d3,d4
  4226.             lsr.l    #1,d4
  4227.             eor.l    d2,d4
  4228.             and.l    d5,d4
  4229.             eor.l    d4,d2
  4230.             lsl.l    #1,d4
  4231.             eor.l    d4,d3
  4232.  
  4233.             move.l    d0,a3
  4234.             move.l    d1,a4
  4235.             move.l    d2,a5
  4236.             move.l    d3,a6
  4237.  
  4238.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  4239.  
  4240. .1            move.l    #$0F0F0F0F,d5
  4241.  
  4242.             move.l    (a0)+,d0
  4243.             and.l    d5,d0
  4244.             lsl.l    #4,d0
  4245.             move.l    (a0)+,d1
  4246.             and.l    d5,d1
  4247.             or.l    d1,d0
  4248.  
  4249.             move.l    (a0)+,d1
  4250.             and.l    d5,d1
  4251.             lsl.l    #4,d1
  4252.             move.l    (a0)+,d2
  4253.             and.l    d5,d2
  4254.             or.l    d2,d1
  4255.  
  4256.             move.l    (a0)+,d2
  4257.             and.l    d5,d2
  4258.             lsl.l    #4,d2
  4259.             move.l    (a0)+,d3
  4260.             and.l    d5,d3
  4261.             or.l    d3,d2
  4262.  
  4263.             move.l    (a0)+,d3
  4264.             and.l    d5,d3
  4265.             lsl.l    #4,d3
  4266.             move.l    (a0)+,d4
  4267.             and.l    d5,d4
  4268.             or.l    d4,d3
  4269.  
  4270.             move.l    a6,(a1)+
  4271.  
  4272.             move.w    d2,d4
  4273.             move.w    d0,d2
  4274.             swap    d2
  4275.             move.w    d2,d0
  4276.             move.w    d4,d2
  4277.  
  4278.             move.w    d3,d4
  4279.             move.w    d1,d3
  4280.             swap    d3
  4281.             move.w    d3,d1
  4282.             move.w    d4,d3
  4283.  
  4284.             move.l    #$00FF00FF,d5
  4285.  
  4286.             move.l    d1,d4
  4287.             lsr.l    #8,d4
  4288.             eor.l    d0,d4
  4289.             and.l    d5,d4
  4290.             eor.l    d4,d0
  4291.             lsl.l    #8,d4
  4292.             eor.l    d4,d1
  4293.  
  4294.             move.l    a5,(-4,a1,d7.l)
  4295.  
  4296.             move.l    d3,d4
  4297.             lsr.l    #8,d4
  4298.             eor.l    d2,d4
  4299.             and.l    d5,d4
  4300.             eor.l    d4,d2
  4301.             lsl.l    #8,d4
  4302.             eor.l    d4,d3
  4303.  
  4304.             move.l    #$33333333,d5
  4305.  
  4306.             move.l    d2,d4
  4307.             lsr.l    #2,d4
  4308.             eor.l    d0,d4
  4309.             and.l    d5,d4
  4310.             eor.l    d4,d0
  4311.             lsl.l    #2,d4
  4312.             eor.l    d4,d2
  4313.  
  4314.             move.l    a4,(-4,a1,d7.l*2)
  4315.  
  4316.             move.l    d3,d4
  4317.             lsr.l    #2,d4
  4318.             eor.l    d1,d4
  4319.             and.l    d5,d4
  4320.             eor.l    d4,d1
  4321.             lsl.l    #2,d4
  4322.             eor.l    d4,d3
  4323.  
  4324.             move.l    #$55555555,d5
  4325.  
  4326.             move.l    d1,d4
  4327.             lsr.l    #1,d4
  4328.             eor.l    d0,d4
  4329.             and.l    d5,d4
  4330.             eor.l    d4,d0
  4331.             lsl.l    #1,d4
  4332.             eor.l    d4,d1
  4333.  
  4334.             add.l    d7,a1
  4335.             move.l    a3,(-4,a1,d7.l*2)
  4336.             sub.l    d7,a1
  4337.  
  4338.             move.l    d3,d4
  4339.             lsr.l    #1,d4
  4340.             eor.l    d2,d4
  4341.             and.l    d5,d4
  4342.             eor.l    d4,d2
  4343.             lsl.l    #1,d4
  4344.             eor.l    d4,d3
  4345.  
  4346.             move.l    d0,a3
  4347.             move.l    d1,a4
  4348.             move.l    d2,a5
  4349.             move.l    d3,a6
  4350.  
  4351.             sub.l    #1,d6
  4352.             bne    .2
  4353.  
  4354.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  4355.  
  4356.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*8),a1
  4357.  
  4358. .2            cmp.l    a2,a0
  4359.             bne    .1
  4360.  
  4361.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  4362.  
  4363.             move.l    #$F0F0F0F0,d5
  4364.  
  4365.             move.l    (a0)+,d0
  4366.             and.l    d5,d0
  4367.             move.l    (a0)+,d1
  4368.             and.l    d5,d1
  4369.             lsr.l    #4,d1
  4370.             or.l    d1,d0
  4371.  
  4372.             move.l    (a0)+,d1
  4373.             and.l    d5,d1
  4374.             move.l    (a0)+,d2
  4375.             and.l    d5,d2
  4376.             lsr.l    #4,d2
  4377.             or.l    d2,d1
  4378.  
  4379.             move.l    (a0)+,d2
  4380.             and.l    d5,d2
  4381.             move.l    (a0)+,d3
  4382.             and.l    d5,d3
  4383.             lsr.l    #4,d3
  4384.             or.l    d3,d2
  4385.  
  4386.             move.l    (a0)+,d3
  4387.             and.l    d5,d3
  4388.             move.l    (a0)+,d4
  4389.             and.l    d5,d4
  4390.             lsr.l    #4,d4
  4391.             or.l    d4,d3
  4392.  
  4393.             move.l    a6,(a1)+
  4394.  
  4395.             move.w    d2,d4
  4396.             move.w    d0,d2
  4397.             swap    d2
  4398.             move.w    d2,d0
  4399.             move.w    d4,d2
  4400.  
  4401.             move.w    d3,d4
  4402.             move.w    d1,d3
  4403.             swap    d3
  4404.             move.w    d3,d1
  4405.             move.w    d4,d3
  4406.  
  4407.             move.l    #$00FF00FF,d5
  4408.  
  4409.             move.l    d1,d4
  4410.             lsr.l    #8,d4
  4411.             eor.l    d0,d4
  4412.             and.l    d5,d4
  4413.             eor.l    d4,d0
  4414.             lsl.l    #8,d4
  4415.             eor.l    d4,d1
  4416.  
  4417.             move.l    a5,(-4,a1,d7.l)
  4418.  
  4419.             move.l    d3,d4
  4420.             lsr.l    #8,d4
  4421.             eor.l    d2,d4
  4422.             and.l    d5,d4
  4423.             eor.l    d4,d2
  4424.             lsl.l    #8,d4
  4425.             eor.l    d4,d3
  4426.  
  4427.             move.l    #$33333333,d5
  4428.  
  4429.             move.l    d2,d4
  4430.             lsr.l    #2,d4
  4431.             eor.l    d0,d4
  4432.             and.l    d5,d4
  4433.             eor.l    d4,d0
  4434.             lsl.l    #2,d4
  4435.             eor.l    d4,d2
  4436.  
  4437.             move.l    a4,(-4,a1,d7.l*2)
  4438.  
  4439.             move.l    d3,d4
  4440.             lsr.l    #2,d4
  4441.             eor.l    d1,d4
  4442.             and.l    d5,d4
  4443.             eor.l    d4,d1
  4444.             lsl.l    #2,d4
  4445.             eor.l    d4,d3
  4446.  
  4447.             move.l    #$55555555,d5
  4448.  
  4449.             move.l    d1,d4
  4450.             lsr.l    #1,d4
  4451.             eor.l    d0,d4
  4452.             and.l    d5,d4
  4453.             eor.l    d4,d0
  4454.             lsl.l    #1,d4
  4455.             eor.l    d4,d1
  4456.  
  4457.             add.l    d7,a1
  4458.             move.l    a3,(-4,a1,d7.l*2)
  4459.             sub.l    d7,a1
  4460.  
  4461.             move.l    d3,d4
  4462.             lsr.l    #1,d4
  4463.             eor.l    d2,d4
  4464.             and.l    d5,d4
  4465.             eor.l    d4,d2
  4466.             lsl.l    #1,d4
  4467.             eor.l    d4,d3
  4468.  
  4469.             move.l    d0,a3
  4470.             move.l    d1,a4
  4471.             move.l    d2,a5
  4472.             move.l    d3,a6
  4473.  
  4474.             lea    ([C2P_PlanarBufferAddress,pc],d7.l*4),a1
  4475.  
  4476.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  4477.  
  4478. .3            move.l    #$F0F0F0F0,d5
  4479.  
  4480.             move.l    (a0)+,d0
  4481.             and.l    d5,d0
  4482.             move.l    (a0)+,d1
  4483.             and.l    d5,d1
  4484.             lsr.l    #4,d1
  4485.             or.l    d1,d0
  4486.  
  4487.             move.l    (a0)+,d1
  4488.             and.l    d5,d1
  4489.             move.l    (a0)+,d2
  4490.             and.l    d5,d2
  4491.             lsr.l    #4,d2
  4492.             or.l    d2,d1
  4493.  
  4494.             move.l    (a0)+,d2
  4495.             and.l    d5,d2
  4496.             move.l    (a0)+,d3
  4497.             and.l    d5,d3
  4498.             lsr.l    #4,d3
  4499.             or.l    d3,d2
  4500.  
  4501.             move.l    (a0)+,d3
  4502.             and.l    d5,d3
  4503.             move.l    (a0)+,d4
  4504.             and.l    d5,d4
  4505.             lsr.l    #4,d4
  4506.             or.l    d4,d3
  4507.  
  4508.             move.l    a6,(a1)+
  4509.  
  4510.             move.w    d2,d4
  4511.             move.w    d0,d2
  4512.             swap    d2
  4513.             move.w    d2,d0
  4514.             move.w    d4,d2
  4515.  
  4516.             move.w    d3,d4
  4517.             move.w    d1,d3
  4518.             swap    d3
  4519.             move.w    d3,d1
  4520.             move.w    d4,d3
  4521.  
  4522.             move.l    #$00FF00FF,d5
  4523.  
  4524.             move.l    d1,d4
  4525.             lsr.l    #8,d4
  4526.             eor.l    d0,d4
  4527.             and.l    d5,d4
  4528.             eor.l    d4,d0
  4529.             lsl.l    #8,d4
  4530.             eor.l    d4,d1
  4531.  
  4532.             move.l    a5,(-4,a1,d7.l)
  4533.  
  4534.             move.l    d3,d4
  4535.             lsr.l    #8,d4
  4536.             eor.l    d2,d4
  4537.             and.l    d5,d4
  4538.             eor.l    d4,d2
  4539.             lsl.l    #8,d4
  4540.             eor.l    d4,d3
  4541.  
  4542.             move.l    #$33333333,d5
  4543.  
  4544.             move.l    d2,d4
  4545.             lsr.l    #2,d4
  4546.             eor.l    d0,d4
  4547.             and.l    d5,d4
  4548.             eor.l    d4,d0
  4549.             lsl.l    #2,d4
  4550.             eor.l    d4,d2
  4551.  
  4552.             move.l    a4,(-4,a1,d7.l*2)
  4553.  
  4554.             move.l    d3,d4
  4555.             lsr.l    #2,d4
  4556.             eor.l    d1,d4
  4557.             and.l    d5,d4
  4558.             eor.l    d4,d1
  4559.             lsl.l    #2,d4
  4560.             eor.l    d4,d3
  4561.  
  4562.             move.l    #$55555555,d5
  4563.  
  4564.             move.l    d1,d4
  4565.             lsr.l    #1,d4
  4566.             eor.l    d0,d4
  4567.             and.l    d5,d4
  4568.             eor.l    d4,d0
  4569.             lsl.l    #1,d4
  4570.             eor.l    d4,d1
  4571.  
  4572.             add.l    d7,a1
  4573.             move.l    a3,(-4,a1,d7.l*2)
  4574.             sub.l    d7,a1
  4575.  
  4576.             move.l    d3,d4
  4577.             lsr.l    #1,d4
  4578.             eor.l    d2,d4
  4579.             and.l    d5,d4
  4580.             eor.l    d4,d2
  4581.             lsl.l    #1,d4
  4582.             eor.l    d4,d3
  4583.  
  4584.             move.l    d0,a3
  4585.             move.l    d1,a4
  4586.             move.l    d2,a5
  4587.             move.l    d3,a6
  4588.  
  4589.             sub.l    #1,d6
  4590.             bne    .4
  4591.  
  4592.             move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  4593.  
  4594.             lea    (-CHUNKY_BUFFER_WIDTH/8,a1,d7.l*8),a1
  4595.  
  4596. .4            cmp.l    a2,a0
  4597.             bne    .3
  4598.  
  4599.             move.l    a6,(a1)
  4600.             move.l    a5,(a1,d7.l)
  4601.             move.l    a4,(a1,d7.l*2)
  4602.             add.l    d7,a1
  4603.             move.l    a3,(a1,d7.l*2)
  4604.  
  4605.             movem.l    (sp)+,d2-d7/a2-a6
  4606.             rts
  4607.  
  4608. *-------------------------------------------------------------------------------
  4609.  
  4610. * IN: a0.l - Chunky Buffer Address
  4611. *     a1.l - Delta Buffer Address
  4612. *     a2.l - Planar Buffer Address
  4613. *     a3.l - Line Skip Buffer Address
  4614. *     d0.l - Bitplane Byte Width
  4615.  
  4616. d_8            movem.l    d2-d7/a2-a6,-(sp)
  4617.  
  4618.             move.l    a0,(C2P_ChunkyBufferAddress)
  4619.             move.l    a1,(C2P_DeltaBufferAddress)
  4620.             move.l    a2,(C2P_PlanarBufferAddress)
  4621.             move.l    a3,(C2P_LineSkipBufferAddress)
  4622.             move.l    d0,(C2P_BitplaneByteWidth)
  4623.  
  4624.             lea    (CHUNKY_BUFFER_WIDTH*CHUNKY_BUFFER_HEIGHT,a0),a4
  4625.             move.l    a4,(C2P_ChunkyBufferEndAddress)
  4626.  
  4627.  
  4628.  
  4629.             move.l    (C2P_ChunkyBufferAddress,pc),a0
  4630.             move.l    (C2P_DeltaBufferAddress,pc),a1
  4631.             move.l    (C2P_PlanarBufferAddress,pc),a2
  4632.             move.l    (C2P_LineSkipBufferAddress,pc),a3
  4633.  
  4634.             move.l    (C2P_BitplaneByteWidth,pc),d7
  4635.  
  4636. .12            tst.b    (a3)+
  4637.             beq    .14
  4638.  
  4639.             add.l    #CHUNKY_BUFFER_WIDTH,a0
  4640.             add.l    #CHUNKY_BUFFER_WIDTH,a1
  4641.  
  4642.             lea    (a2,d7.l*8),a2
  4643.  
  4644.             bra    .13
  4645.  
  4646. .14            move.l    #CHUNKY_BUFFER_WIDTH/32,d6
  4647.  
  4648. .11            cmp.l    (a0)+,(a1)+
  4649.             bne    .1
  4650.             cmp.l    (a0)+,(a1)+
  4651.             bne    .2
  4652.             cmp.l    (a0)+,(a1)+
  4653.             bne    .3
  4654.             cmp.l    (a0)+,(a1)+
  4655.             bne    .4
  4656.             cmp.l    (a0)+,(a1)+
  4657.             bne    .5
  4658.             cmp.l    (a0)+,(a1)+
  4659.             bne    .6
  4660.             cmp.l    (a0)+,(a1)+
  4661.             bne    .7
  4662.             cmp.l    (a0)+,(a1)+
  4663.             bne    .8
  4664.  
  4665. .10            add.l    #4,a2
  4666.  
  4667.             sub.l    #1,d6
  4668.             bne    .11
  4669.  
  4670.             lea    (-CHUNKY_BUFFER_WIDTH/8,a2,d7.l*8),a2
  4671.  
  4672. .13            cmp.l    (C2P_ChunkyBufferEndAddress,pc),a0
  4673.             bne    .12
  4674.  
  4675.             movem.l    (sp)+,d2-d7/a2-a6
  4676.             rts
  4677.  
  4678. .1            sub.l    #1*4,a0
  4679.             add.l    #7*4,a1
  4680.             bra    .9
  4681.  
  4682. .2            sub.l    #2*4,a0
  4683.             add.l    #6*4,a1
  4684.             bra    .9
  4685.  
  4686. .3            sub.l    #3*4,a0
  4687.             add.l    #5*4,a1
  4688.             bra    .9
  4689.  
  4690. .4            sub.l    #4*4,a0
  4691.             add.l    #4*4,a1
  4692.             bra    .9
  4693.  
  4694. .5            sub.l    #5*4,a0
  4695.             add.l    #3*4,a1
  4696.             bra    .9
  4697.  
  4698. .6            sub.l    #6*4,a0
  4699.             add.l    #2*4,a1
  4700.             bra    .9
  4701.  
  4702. .7            sub.l    #7*4,a0
  4703.             add.l    #1*4,a1
  4704.             bra    .9
  4705.  
  4706. .8            sub.l    #8*4,a0
  4707.             add.l    #0*4,a1
  4708.             bra    .9
  4709.  
  4710. .9            move.l    #$0F0F0F0F,d5
  4711.  
  4712.             move.l    (a0)+,d0
  4713.             and.l    d5,d0
  4714.             lsl.l    #4,d0
  4715.             move.l    (a0)+,d1
  4716.             and.l    d5,d1
  4717.             or.l    d1,d0
  4718.  
  4719.             move.l    (a0)+,d1
  4720.             and.l    d5,d1
  4721.             lsl.l    #4,d1
  4722.             move.l    (a0)+,d2
  4723.             and.l    d5,d2
  4724.             or.l    d2,d1
  4725.  
  4726.             move.l    (a0)+,d2
  4727.             and.l    d5,d2
  4728.             lsl.l    #4,d2
  4729.             move.l    (a0)+,d3
  4730.             and.l    d5,d3
  4731.             or.l    d3,d2
  4732.  
  4733.             move.l    (a0)+,d3
  4734.             and.l    d5,d3
  4735.             lsl.l    #4,d3
  4736.             move.l    (a0)+,d4
  4737.             and.l    d5,d4
  4738.             or.l    d4,d3
  4739.  
  4740.             move.w    d2,d4
  4741.             move.w    d0,d2
  4742.             swap    d2
  4743.             move.w    d2,d0
  4744.             move.w    d4,d2
  4745.  
  4746.             move.w    d3,d4
  4747.             move.w    d1,d3
  4748.             swap    d3
  4749.             move.w    d3,d1
  4750.             move.w    d4,d3
  4751.  
  4752.             move.l    #$00FF00FF,d5
  4753.  
  4754.             move.l    d1,d4
  4755.             lsr.l    #8,d4
  4756.             eor.l    d0,d4
  4757.             and.l    d5,d4
  4758.             eor.l    d4,d0
  4759.             lsl.l    #8,d4
  4760.             eor.l    d4,d1
  4761.  
  4762.             move.l    d3,d4
  4763.             lsr.l    #8,d4
  4764.             eor.l    d2,d4
  4765.             and.l    d5,d4
  4766.             eor.l    d4,d2
  4767.             lsl.l    #8,d4
  4768.             eor.l    d4,d3
  4769.  
  4770.             move.l    #$33333333,d5
  4771.  
  4772.             move.l    d2,d4
  4773.             lsr.l    #2,d4
  4774.             eor.l    d0,d4
  4775.             and.l    d5,d4
  4776.             eor.l    d4,d0
  4777.             lsl.l    #2,d4
  4778.             eor.l    d4,d2
  4779.  
  4780.             move.l    d3,d4
  4781.             lsr.l    #2,d4
  4782.             eor.l    d1,d4
  4783.             and.l    d5,d4
  4784.             eor.l    d4,d1
  4785.             lsl.l    #2,d4
  4786.             eor.l    d4,d3
  4787.  
  4788.             move.l    #$55555555,d5
  4789.  
  4790.             move.l    d1,d4
  4791.             lsr.l    #1,d4
  4792.             eor.l    d0,d4
  4793.             and.l    d5,d4
  4794.             eor.l    d4,d0
  4795.             lsl.l    #1,d4
  4796.             eor.l    d4,d1
  4797.  
  4798.             move.l    d1,(a2,d7.l*2)
  4799.  
  4800.             move.l    d3,d4
  4801.             lsr.l    #1,d4
  4802.             eor.l    d2,d4
  4803.             and.l    d5,d4
  4804.             eor.l    d4,d2
  4805.             lsl.l    #1,d4
  4806.             eor.l    d4,d3
  4807.  
  4808.             move.l    d0,a4
  4809.             move.l    d2,a5
  4810.             move.l    d3,a6
  4811.  
  4812.             sub.l    #8*4,a0
  4813.  
  4814.             move.l    #$F0F0F0F0,d5
  4815.  
  4816.             move.l    (a0)+,d0
  4817.             and.l    d5,d0
  4818.             move.l    (a0)+,d1
  4819.             and.l    d5,d1
  4820.             lsr.l    #4,d1
  4821.             or.l    d1,d0
  4822.  
  4823.             move.l    (a0)+,d1
  4824.             and.l    d5,d1
  4825.             move.l    (a0)+,d2
  4826.             and.l    d5,d2
  4827.             lsr.l    #4,d2
  4828.             or.l    d2,d1
  4829.  
  4830.             move.l    (a0)+,d2
  4831.             and.l    d5,d2
  4832.             move.l    (a0)+,d3
  4833.             and.l    d5,d3
  4834.             lsr.l    #4,d3
  4835.             or.l    d3,d2
  4836.  
  4837.             move.l    (a0)+,d3
  4838.             and.l    d5,d3
  4839.             move.l    (a0)+,d4
  4840.             and.l    d5,d4
  4841.             lsr.l    #4,d4
  4842.             or.l    d4,d3
  4843.  
  4844.             move.l    a6,(a2)
  4845.  
  4846.             move.w    d2,d4
  4847.             move.w    d0,d2
  4848.             swap    d2
  4849.             move.w    d2,d0
  4850.             move.w    d4,d2
  4851.  
  4852.             move.w    d3,d4
  4853.             move.w    d1,d3
  4854.             swap    d3
  4855.             move.w    d3,d1
  4856.             move.w    d4,d3
  4857.  
  4858.             move.l    #$00FF00FF,d5
  4859.  
  4860.             move.l    d1,d4
  4861.             lsr.l    #8,d4
  4862.             eor.l    d0,d4
  4863.             and.l    d5,d4
  4864.             eor.l    d4,d0
  4865.             lsl.l    #8,d4
  4866.             eor.l    d4,d1
  4867.  
  4868.             move.l    a5,(a2,d7.l)
  4869.  
  4870.             move.l    d3,d4
  4871.             lsr.l    #8,d4
  4872.             eor.l    d2,d4
  4873.             and.l    d5,d4
  4874.             eor.l    d4,d2
  4875.             lsl.l    #8,d4
  4876.             eor.l    d4,d3
  4877.  
  4878.             move.l    #$33333333,d5
  4879.  
  4880.             move.l    d2,d4
  4881.             lsr.l    #2,d4
  4882.             eor.l    d0,d4
  4883.             and.l    d5,d4
  4884.             eor.l    d4,d0
  4885.             lsl.l    #2,d4
  4886.             eor.l    d4,d2
  4887.  
  4888.             add.l    d7,a2
  4889.             move.l    a4,(a2,d7.l*2)
  4890.  
  4891.             move.l    d3,d4
  4892.             lsr.l    #2,d4
  4893.             eor.l    d1,d4
  4894.             and.l    d5,d4
  4895.             eor.l    d4,d1
  4896.             lsl.l    #2,d4
  4897.             eor.l    d4,d3
  4898.  
  4899.             move.l    #$55555555,d5
  4900.  
  4901.             move.l    d1,d4
  4902.             lsr.l    #1,d4
  4903.             eor.l    d0,d4
  4904.             and.l    d5,d4
  4905.             eor.l    d4,d0
  4906.  
  4907.             lea    (a2,d7.l*4),a2
  4908.             move.l    d0,(a2,d7.l*2)
  4909.             sub.l    d7,a2
  4910.  
  4911.             lsl.l    #1,d4
  4912.             eor.l    d4,d1
  4913.  
  4914.             move.l    d1,(a2,d7.l*2)
  4915.  
  4916.             move.l    d3,d4
  4917.             lsr.l    #1,d4
  4918.             eor.l    d2,d4
  4919.             and.l    d5,d4
  4920.             eor.l    d4,d2
  4921.  
  4922.             move.l    d2,(a2,d7.l)
  4923.  
  4924.             lsl.l    #1,d4
  4925.             eor.l    d4,d3
  4926.  
  4927.             move.l    d3,(a2)
  4928.  
  4929.             sub.l    d7,a2
  4930.             sub.l    d7,a2
  4931.             sub.l    d7,a2
  4932.             sub.l    d7,a2
  4933.  
  4934.             bra    .10
  4935.  
  4936. *-------------------------------------------------------------------------------
  4937.  
  4938. *-------------------------------------------------------------------------------
  4939.  
  4940.                 cnop    0,4
  4941.  
  4942. C2P_ChunkyBufferAddress        dc.l    0
  4943. C2P_DeltaBufferAddress        dc.l    0
  4944. C2P_PlanarBufferAddress        dc.l    0
  4945. C2P_LineSkipBufferAddress    dc.l    0
  4946. C2P_BitplaneByteWidth        dc.l    0
  4947. C2P_ChunkyBufferEndAddress    dc.l    0
  4948.  
  4949. C2P_FullRoutine        dc.l    0
  4950. C2P_DeltaRoutine    dc.l    0
  4951.